Score:0

การทดสอบการทำงานของอีเมล (หัวเรื่องและชื่อเรื่อง)

ธง bo

คำถาม: การทดสอบการทำงานของ 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 จะไม่เต็มไปด้วยหัวเรื่องและเนื้อความ ไม่มีการบ่นหรือข้อยกเว้น การทดสอบเป็นสีเขียว จดหมายว่างเปล่า

fr flag
ลิงก์ในโพสต์ของคุณเป็นการทดสอบเคอร์เนล ไม่ใช่การทดสอบการทำงาน และทดสอบปลั๊กอิน EmailAction หลักมันไม่ได้ทดสอบเมลที่คุณส่งด้วยตัวเองผ่าน $mailManager->mail() ด้วย hook_mail() ของคุณเอง เราจะต้องดู hook_mail() และฟังก์ชันการทดสอบทั้งหมดของคุณ เพื่อช่วยให้คุณทราบว่าเหตุใดโมดูลที่กำหนดเองของคุณจึงไม่มีเนื้อหาหรือหัวเรื่อง ฉันสงสัยว่า hook_mail() ของคุณผิด - หนึ่งในสิ่งที่คุณต้องทำใน hook_mail() คือการตั้งค่าหัวเรื่องและเนื้อความให้ถูกต้อง - การส่งค่าไปยัง $mailManager->mail() ไม่เพียงพอ
bo flag
ใช่ เนื่องจากฉันเขียนพารามิเตอร์โมดูลใน mailmanager->mail ผิดและไม่ได้เรียก hook_mail นั่นเป็นสาเหตุที่การทดสอบเป็นสีเขียว แต่อีเมลที่ส่งไม่มีเนื้อหาและไม่มีหัวเรื่อง คำถามคือ ฉันจะเขียนแบบทดสอบที่เป็นสีแดงได้อย่างไรเนื่องจากหัวเรื่องและเนื้อความหายไป ? และซับซ้อนยิ่งขึ้น: ฉันจะเขียนการทดสอบนี้โดยไม่ขึ้นกับปลั๊กอิน auf mail ประเภทใด ( drupal default, smyfony-/swiftmail, sesmailer,â¦) ที่ติดตั้งไว้ได้อย่างไร
fr flag
ไม่ การทดสอบเป็นสีเขียวเนื่องจากการทดสอบกำลังทดสอบ EmailAction และไม่ได้ทดสอบโค้ดของคุณเลย หรืออย่างน้อยนั่นคือสิ่งที่ฉันรวบรวมจากโพสต์ของคุณ คุณยังไม่ได้แสดงรหัสทดสอบที่คุณใช้ หากคุณต้องการใช้การทดสอบเคอร์เนล ให้คัดลอกบางอย่างเช่น core/modules/user/tests/src/Kernel/UserMailNotifyTest.php และแก้ไขโค้ดของคุณ โครงร่างพื้นฐานของโค้ดทดสอบคือ 1) ตั้งค่าสภาพแวดล้อมการทดสอบของคุณ 2) เรียกฟังก์ชันของคุณที่ส่งเมล 3) ใช้ $this-getMails() เพื่อกู้คืนเมลที่ส่งจากบัฟเฟอร์ จากนั้นตรวจสอบรายละเอียดของข้อความ( ส).
bo flag
เป็นไปได้อย่างไรที่จะทดสอบ hook_mail ในโมดูล cutom ที่มีความหมาย มันไม่เคยทดสอบในคอร์ด้วยใช่หรือไม่ ?

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา