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

Метод getSent класса InMemoryTransport

Метод getSent класса InMemoryTransport возвращает массив всех сообщений, которые были отправлены через транспорт во время теста. Каждый элемент массива - это объект сообщения с методами getMessage и getEnvelope. Метод не принимает параметров и используется для проверки того, что приложение корректно отправило сообщение в очередь.

Синтаксис

public function getSent(): array

Пример

Давайте настроим транспорт in-memory в конфигурации тестового окружения:

framework: messenger: transports: async: dsn: 'in-memory://'

Теперь напишем тест, который отправляет сообщение и проверяет его через getSent:

<?php namespace App\Tests; use App\Message\ArticleMessage; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Messenger\Transport\InMemoryTransport; class MessageTest extends KernelTestCase { public function testMessageSent(): void { self::bootKernel(); $container = static::getContainer(); $bus = $container->get(MessageBusInterface::class); $transport = $container->get('messenger.transport.async'); $bus->dispatch(new ArticleMessage('hello')); $sent = $transport->getSent(); $this->assertCount(1, $sent); } } ?>

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

"OK (1 test, 1 assertion)"

Пример

Давайте извлечём само сообщение из массива отправленных и проверим его содержимое:

<?php namespace App\Tests; use App\Message\ArticleMessage; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Messenger\MessageBusInterface; class MessageTest extends KernelTestCase { public function testMessageContent(): void { self::bootKernel(); $container = static::getContainer(); $bus = $container->get(MessageBusInterface::class); $transport = $container->get('messenger.transport.async'); $bus->dispatch(new ArticleMessage('abcde')); $sent = $transport->getSent(); $message = $sent[0]->getMessage(); $this->assertSame('abcde', $message->getText()); } } ?>

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

"OK (1 test, 1 assertion)"

Пример

Давайте отправим два сообщения и проверим, что getSent вернёт оба:

<?php namespace App\Tests; use App\Message\ArticleMessage; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Messenger\MessageBusInterface; class MessageTest extends KernelTestCase { public function testMultipleMessages(): void { self::bootKernel(); $container = static::getContainer(); $bus = $container->get(MessageBusInterface::class); $transport = $container->get('messenger.transport.async'); $bus->dispatch(new ArticleMessage('hello')); $bus->dispatch(new ArticleMessage('user')); $sent = $transport->getSent(); $texts = []; foreach ($sent as $envelope) { $texts[] = $envelope->getMessage()->getText(); } $this->assertSame(['hello', 'user'], $texts); } } ?>

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

"OK (1 test, 1 assertion)"

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

  • класс InMemoryTransport,
    который эмулирует транспорт Messenger в тестах
  • метод getAcknowledged,
    который возвращает подтверждённые сообщения
  • метод getRejected,
    который возвращает отклонённые сообщения
  • метод reset,
    который очищает все сохранённые сообщения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить