คำถาม: การทดสอบการทำงานของ Drupal (ขยาย BrowserTestBase) จะตรวจสอบ Mail-Subject และ Mail-Body ที่กำหนดใน hook_mail ในโมดูลที่กำหนดเองได้อย่างไร
บริบท:
ฉันมีโมดูลที่กำหนดเองซึ่งส่งอีเมลไปยังบางคนในกรณีที่มีการสร้างโหนดใหม่ของบันเดิลบางอย่าง
มีการทดสอบการทำงาน (BrowserTestbase) สำหรับสิ่งนี้ในลักษณะเดียวกับที่ User Module ทำกับ Core:
https://api.drupal.org/api/drupal/core%21tests%21Drupal%21KernelTests%21Core%21Action%21EmailActionTest.php/function/EmailActionTest%3A%3AtestEmailAction/8.9.x
การทดสอบนี้เป็นสีเขียว หัวข้อและเนื้อหาจะถูกตรวจสอบภายหลัง
$captured_emails = $this->drupalGetMails();
$this->assertEqual($captured_emails[0]['params']['subject'],"เรื่องที่ฉันต้องการ");
$this->assertEqual($captured_emails[0]["params"]["body"], "ตัวที่ต้องการ");
แต่จดหมายจริงที่จัดส่งไม่มีหัวเรื่องและไม่มีเนื้อหา ! เป็นไปได้อย่างไร ? ฉันทำผิดพลาดในโมดูลแบบกำหนดเองเมื่อฉันต้องการส่งอีเมล:
$mailManager->mail('my_custom', $key, $recipient, $langcode, $params, $from_email);
ค่าพารามิเตอร์แรกไม่ถูกต้อง เช่นเดียวกับโมดูลชื่อ "my_awesome" แต่ไม่ใช่ "my_custom" ในกรณีนี้ Drupal จะไม่เรียก hook_mail Implementation ใน my_awesome_mail ดังนั้น $message Object จะไม่เต็มไปด้วยหัวเรื่องและเนื้อความ ไม่มีการบ่นหรือข้อยกเว้น การทดสอบเป็นสีเขียว จดหมายว่างเปล่า