РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1130 of 1361 menu

Метод assertQueuedEmailCount

Метод assertQueuedEmailCount из класса WebTestCase проверяет количество писем, которые находятся в очереди на отправку. Первым параметром передаётся ожидаемое число писем, вторым - необязательное сообщение об ошибке. Метод используется вместе с InMemoryTransport, который перехватывает отправленные письма.

Синтаксис

assertQueuedEmailCount(int $count, string $message = '')

Пример

Давайте создадим контроллер, который ставит письмо в очередь на отправку:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Email; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(MailerInterface $mailer): Response { $email = (new Email()) ->from('user@example.com') ->to('article@example.com') ->subject('hello') ->text('abcde'); $mailer->send($email); return new Response('hello'); } } ?>

Давайте напишем тест, который проверяет, что в очереди находится одно письмо:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testIndex(): void { $client = static::createClient(); $client->request('GET', '/'); $this->assertResponseIsSuccessful(); $this->assertQueuedEmailCount(1); } } ?>

Результат выполнения теста:

php bin/phpunit tests/Controller/ArticleControllerTest.php
OK (1 test, 2 assertions)

Пример

Давайте поставим в очередь два письма и проверим их количество:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Email; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(MailerInterface $mailer): Response { $email1 = (new Email()) ->from('user@example.com') ->to('article1@example.com') ->subject('hello') ->text('abcde'); $email2 = (new Email()) ->from('user@example.com') ->to('article2@example.com') ->subject('hello') ->text('abcde'); $mailer->send($email1); $mailer->send($email2); return new Response('hello'); } } ?>

Давайте проверим, что в очереди ровно два письма:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testIndex(): void { $client = static::createClient(); $client->request('GET', '/'); $this->assertResponseIsSuccessful(); $this->assertQueuedEmailCount(2); } } ?>

Результат выполнения теста:

OK (1 test, 2 assertions)

Пример

Давайте проверим, что писем в очереди нет:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testIndex(): void { $client = static::createClient(); $client->request('GET', '/'); $this->assertQueuedEmailCount(0); } } ?>

Результат выполнения теста:

OK (1 test, 1 assertion)

Смотрите также

  • метод assertEmailCount,
    который проверяет общее количество писем
  • метод assertEmailIsQueued,
    который проверяет, что письмо попало в очередь
  • класс InMemoryTransport,
    который перехватывает отправленные письма
  • класс WebTestCase,
    который предоставляет методы для тестирования
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить