Files
backend/tests/Service/SchedulerTransportTest.php
2026-05-27 19:36:32 +03:00

42 lines
1.6 KiB
PHP

<?php
// tests/Integration/Messenger/SchedulerTransportTest.php
namespace Tests\Service;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\Console\Messenger\RunCommandMessage;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Messenger\Transport\TransportInterface;
class SchedulerTransportTest extends KernelTestCase
{
public function testMessageIsSentToSchedulerTransport(): void
{
self::bootKernel();
// 1. Получаем MessageBusInterface (правильный способ)
/** @var MessageBusInterface $messageBus */
$messageBus = self::getContainer()->get(MessageBusInterface::class);
// 2. Получаем транспорт scheduler_default
/** @var TransportInterface $transport */
$transport = self::getContainer()->get('messenger.transport.scheduler_default');
// 3. Очищаем очередь перед тестом (если транспорт поддерживает)
if (method_exists($transport, 'reset')) {
$transport->reset();
}
// 4. Отправляем сообщение
$messageBus->dispatch(new RunCommandMessage('debug:container'));
// 5. Проверяем очередь
$envelopes = $transport->get();
$this->assertCount(1, $envelopes);
$receivedMessage = $envelopes[0]->getMessage();
$this->assertInstanceOf(RunCommandMessage::class, $receivedMessage);
$this->assertEquals('debug:container', $receivedMessage->getCommand());
}
}