Вопрос: Как Drupal Functional Test (расширяющий BrowserTestBase) может проверить наличие определенного Mail-Subject и Mail-Body, определенных в hook_mail в пользовательском модуле?
Контекст:
У меня есть собственный модуль, который отправляет электронное письмо определенным людям в случае создания нового узла определенного пакета.
Для этого существует функциональный тест (BrowserTestbase) точно так же, как пользовательский модуль делает это для ядра:
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 в my_awesome_mail, поэтому объект $message не будет заполнен темой и телом. Нареканий и исключений нет. Тест зеленый, почта пуста.