Câu hỏi: Làm cách nào để Kiểm tra chức năng Drupal (mở rộng BrowserTestBase) kiểm tra Chủ đề thư và Nội dung thư nhất định được xác định trong hook_mail trong một mô-đun tùy chỉnh?
Bối cảnh:
Tôi có một mô-đun tùy chỉnh gửi email đến một số người nhất định trong trường hợp một nút mới của một gói nhất định được tạo.
Có một Kiểm tra chức năng (BrowserTestbase) cho điều này giống như cách mà Mô-đun người dùng đang thực hiện cho Core:
https://api.drupal.org/api/drupal/core%21tests%21Drupal%21KernelTests%21Core%21Action%21EmailActionTest.php/function/EmailActionTest%3A%3AtestEmailAction/8.9.x
Bài kiểm tra này có màu xanh lá cây. Đối tượng và Cơ thể được Kiểm tra sau
$captured_emails = $this->drupalGetMails();
$this->assertEqual($captured_emails[0]['params']['subject'],"Chủ đề mong muốn của tôi");
$this->assertEqual($captured_emails[0]["params"]["body"], "Cơ thể mong muốn của tôi");
NHƯNG các Thư thực tế được gửi không có chủ đề VÀ không có nội dung! Làm thế nào là có thể? Tôi đã mắc lỗi trong mô-đun tùy chỉnh khi muốn gửi Email:
$mailManager->mail('my_custom', $key, $recipient, $langcode, $params, $from_email);
Giá trị tham số đầu tiên là sai. Giống như mô-đun được đặt tên là "my_awesome" chứ không phải "my_custom". Trong trường hợp này, Drupal sẽ không gọi Triển khai hook_mail trong my_awesome_mail, do đó Đối tượng $message sẽ không chứa chủ đề và nội dung. Không có khiếu nại hoặc ngoại lệ. Bài kiểm tra có màu xanh là thư trống.