Întrebare: Cum poate un test funcțional Drupal (extend BrowserTestBase) să verifice un anumit subiect de e-mail și corp de e-mail definite în hook_mail într-un modul personalizat?
Context:
Am un modul personalizat care trimite un e-mail anumitor persoane în cazul în care este creat un nou nod al unui anumit pachet.
Există un test funcțional (BrowserTestbase) pentru aceasta, în același mod în care modulul utilizator o face pentru Core:
https://api.drupal.org/api/drupal/core%21tests%21Drupal%21KernelTests%21Core%21Action%21EmailActionTest.php/function/EmailActionTest%3A%3AtestEmailAction/8.9.x
Acest test este verde. Subiectul și corpul sunt verificate după
$captured_emails = $this->drupalGetMails();
$this->assertEqual($captured_emails[0]['params']['subject'],"Subiectul meu dorit");
$this->assertEqual($captured_emails[0]["params"]["body"], "Corpul meu dorit");
DAR e-mailurile reale care sunt livrate nu au subiect ȘI nu au corp! Cum este posibil ? Am făcut o greșeală în modulul personalizat când am vrut să trimit e-mailul:
$mailManager->mail('my_custom', $key, $recipient, $langcode, $params, $from_email);
Prima valoare a parametrului a fost greșită. Ca și cum modulul este numit „my_awesome”, dar nu „my_custom”. În acest caz, Drupal nu va apela implementarea hook_mail în my_awesome_mail, prin urmare obiectul $message nu va fi umplut cu subiect și corp. Nu există plângeri sau excepții. Testul este verde, e-mailul este gol.