Điểm:0

Kiểm tra chức năng cho email (chủ đề và tiêu đề)

lá cờ bo

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.

lá cờ fr
Liên kết trong bài đăng của bạn là thử nghiệm Hạt nhân, không phải thử nghiệm Chức năng và nó kiểm tra plugin EmailAction cốt lõi.Nó không kiểm tra thư bạn tự gửi qua $mailManager->mail() bằng hook_mail() của riêng bạn. Chúng tôi sẽ phải xem hook_mail() của bạn và chức năng kiểm tra đầy đủ để giúp bạn tìm ra lý do tại sao mô-đun tùy chỉnh của bạn không bao gồm nội dung hoặc chủ đề. Tôi nghi ngờ hook_mail() của bạn là sai - một trong những điều bắt buộc bạn phải làm trong hook_mail() là đặt chủ đề và nội dung chính xác - việc chuyển các giá trị tới $mailManager->mail() là chưa đủ.
lá cờ bo
Có vì tôi đã viết tham số mô-đun trong mailmanager->mail bị sai và hook_mail không được gọi. Đó là lý do tại sao bài kiểm tra có màu xanh lục nhưng email được gửi không có nội dung và không có chủ đề. Câu hỏi ở đây là: làm thế nào tôi có thể viết một bài kiểm tra bị thiếu chủ ngữ và nội dung màu đỏ? Và thậm chí còn phức tạp hơn: làm cách nào tôi có thể viết bài kiểm tra này độc lập từ loại auf mail plugin (drupal default, smyfony-/swiftmail, sesmailer,â¦) được cài đặt?
lá cờ fr
Không, bài kiểm tra có màu xanh vì bài kiểm tra đang kiểm tra EmailAction và hoàn toàn không kiểm tra mã của bạn. Hoặc ít nhất đó là những gì tôi thu thập được từ bài viết của bạn. Bạn vẫn chưa hiển thị mã kiểm tra mà bạn đang sử dụng. Nếu bạn muốn sử dụng kiểm tra Kernel, hãy sao chép một cái gì đó như core/modules/user/tests/src/Kernel/UserMailNotifyTest.php và sửa đổi nó cho mã của bạn. Phác thảo cơ bản của mã kiểm tra là 1) thiết lập môi trường thử nghiệm của bạn, 2) gọi chức năng gửi thư của bạn, 3) sử dụng $this-getMails() để khôi phục mọi thư đã gửi từ bộ đệm, sau đó kiểm tra chi tiết của thư ( S).
lá cờ bo
Vậy làm cách nào để có thể kiểm tra hook_mail trong một mô-đun cutom có ​​ý nghĩa? Nó cũng chưa bao giờ được thử nghiệm trong lõi phải không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.