Метод assertEmailHasHeader
Метод assertEmailHasHeader относится к группе методов
проверки почты и вызывается внутри тестового класса,
унаследованного от WebTestCase. Он проверяет,
что у письма присутствует указанный заголовок. Первым
параметром передаётся объект письма или его индекс,
вторым - имя заголовка.
Метод удобно использовать после выполнения запроса, который приводит к отправке письма. Если заголовок отсутствует, тест завершается ошибкой.
Синтаксис
assertEmailHasHeader(Email $email, string $headerName)
Пример
Давайте отправим письмо из контроллера и проверим
наличие заголовка 'X-Custom-Header':
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentMailerMailerInterface;
use SymfonyComponentMimeEmail;
use SymfonyComponentRoutingAttributeRoute;
class MailController extends AbstractController
{
#[Route('/send', name: 'mail_send')]
public function send(MailerInterface $mailer): Response
{
$email = (new Email())
->from('from@example.com')
->to('to@example.com')
->subject('hello')
->text('article')
->getHeaders()
->addTextHeader('X-Custom-Header', 'abcde');
$mailer->send($email);
return new Response('sent');
}
}
?>
Теперь напишем тест, который проверяет заголовок:
<?php
namespace AppTests;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class MailTest extends WebTestCase
{
public function testEmailHeader(): void
{
$client = static::createClient();
$client->request('GET', '/send');
$this->assertEmailCount(1);
$email = $this->getMailerMessage();
$this->assertEmailHasHeader($email, 'X-Custom-Header');
}
}
?>
Результат выполнения теста:
"OK (1 test, 2 assertions)"
Пример
Давайте проверим стандартный заголовок 'Subject'
у письма:
<?php
namespace AppTests;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class MailTest extends WebTestCase
{
public function testSubjectHeader(): void
{
$client = static::createClient();
$client->request('GET', '/send');
$email = $this->getMailerMessage();
$this->assertEmailHasHeader($email, 'Subject');
$this->assertEmailHasHeader($email, 'From');
$this->assertEmailHasHeader($email, 'To');
}
}
?>
Результат выполнения теста:
"OK (1 test, 4 assertions)"
Смотрите также
-
метод
assertEmailCount,
который проверяет количество отправленных писем -
метод
assertEmailAddressContains,
который проверяет наличие адреса в письме -
метод
assertEmailHtmlBodyContains,
который проверяет HTML-содержимое письма -
метод
assertEmailTextBodyContains,
который проверяет текстовое содержимое письма