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

Класс InMemoryTransport

Класс InMemoryTransport представляет собой реализацию транспорта в памяти. Он используется в функциональных тестах Symfony для проверки отправки сообщений. Вместо того чтобы реально отправлять сообщение в очередь (например, RabbitMQ или Redis), этот транспорт сохраняет все отправленные сообщения внутри себя. Это позволяет в тестах проверить, какие сообщения были отправлены, их содержимое и количество, не поднимая при этом внешний брокер сообщений.

Синтаксис

use Symfony\Component\Messenger\Transport\InMemory\InMemoryTransport; // Создание экземпляра $transport = new InMemoryTransport();

Пример

Давайте создадим экземпляр транспорта и отправим в него сообщение:

<?php namespace App\Service; use Symfony\Component\Messenger\Transport\InMemory\InMemoryTransport; use Symfony\Component\Messenger\Envelope; class MessageSender { public function send(InMemoryTransport $transport, string $text): void { $envelope = new Envelope(new \stdClass()); $transport->send($envelope); } } ?>

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

"Message sent to in-memory transport"

Пример

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

<?php namespace App\Tests\Service; use App\Service\MessageSender; use Symfony\Component\Messenger\Transport\InMemory\InMemoryTransport; use PHPUnit\Framework\TestCase; class MessageSenderTest extends TestCase { public function testSend(): void { $transport = new InMemoryTransport(); $sender = new MessageSender(); $sender->send($transport, 'hello'); $sent = $transport->getSent(); $this->assertCount(1, $sent); } } ?>

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

"1 message sent"

Пример

Давайте проверим метод reset, который очищает список отправленных сообщений:

<?php namespace App\Tests\Service; use Symfony\Component\Messenger\Transport\InMemory\InMemoryTransport; use Symfony\Component\Messenger\Envelope; use PHPUnit\Framework\TestCase; class MessageSenderTest extends TestCase { public function testReset(): void { $transport = new InMemoryTransport(); $transport->send(new Envelope(new \stdClass())); $transport->reset(); $this->assertCount(0, $transport->getSent()); } } ?>

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

"0 messages sent"

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

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