Метод assertEmailAddressContains
Метод assertEmailAddressContains относится к классу
MailerAssertionsTrait и используется в тестах Symfony
для проверки email-сообщений. Первым параметром передаётся
поле письма (например, 'to', 'from',
'cc', 'bcc', 'replyTo'), вторым -
ожидаемый email адрес, третьим - объект письма. Если адрес
не найден в указанном поле, тест завершается ошибкой.
Синтаксис
assertEmailAddressContains(string $headerName, string $address, RawMessage $email)
Пример
Давайте отправим письмо в тесте и проверим, что адрес получателя совпадает с ожидаемым:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Mime\Email;
class MailControllerTest extends WebTestCase
{
public function testEmailAddress(): void
{
$client = static::createClient();
$email = (new Email())
->from('sender@example.com')
->to('user@example.com')
->subject('hello')
->text('article');
$mailer = static::getContainer()->get('mailer');
$mailer->send($email);
$this->assertEmailCount(1);
$message = $this->getMailerMessage();
$this->assertEmailAddressContains('to', 'user@example.com', $message);
}
}
?>
Результат выполнения теста:
"OK (1 test, 2 assertions)"
Пример
Давайте проверим адрес отправителя в поле 'from':
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Mime\Email;
class MailControllerTest extends WebTestCase
{
public function testFromAddress(): void
{
$client = static::createClient();
$email = (new Email())
->from('sender@example.com')
->to('user@example.com')
->subject('hello')
->text('article');
$mailer = static::getContainer()->get('mailer');
$mailer->send($email);
$message = $this->getMailerMessage();
$this->assertEmailAddressContains('from', 'sender@example.com', $message);
}
}
?>
Результат выполнения теста:
"OK (1 test, 2 assertions)"
Пример
Давайте проверим, что адрес получателя отсутствует в поле
'cc', и тест завершится ошибкой:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Mime\Email;
class MailControllerTest extends WebTestCase
{
public function testCcAddress(): void
{
$client = static::createClient();
$email = (new Email())
->from('sender@example.com')
->to('user@example.com')
->cc('copy@example.com')
->subject('hello')
->text('article');
$mailer = static::getContainer()->get('mailer');
$mailer->send($email);
$message = $this->getMailerMessage();
$this->assertEmailAddressContains('cc', 'other@example.com', $message);
}
}
?>
Результат выполнения теста:
"Failed asserting that the email address 'other@example.com' is contained in the 'cc' header of the email."
Смотрите также
-
метод
assertEmailCount,
который проверяет количество отправленных писем -
метод
assertEmailHtmlBodyContains,
который проверяет HTML-содержимое письма -
метод
assertEmailTextBodyContains,
который проверяет текстовое содержимое письма -
метод
assertEmailHasHeader,
который проверяет наличие заголовка в письме