我正在尝试测试我通过 Symfony 中的 Messenger 处理一些数据的过程。
我尝试以下方法:
首先,我定义了我的工人。
$event_dispatcher = $this->getContainer()->get(EventDispatcherInterface::class);
$logger = $this->getContainer()->get(LoggerInterface::class);
$message_bus = $this->getContainer()->get(MessageBusInterface::class);
$transport = $this->getContainer()->get("messenger.transport.async");
$worker = new Worker([$transport], $message_bus, $event_dispatcher, $logger);
然后在此之后,一些代码运行,向信使发送消息。我测试了这段代码,效果很好。通过转储 $transport->get() 我看到我的消息已成功发送到工作人员和数据库。
现在在我的单元测试结束时,我通过 $worker->run() 运行 worker。由于信使只处理几个动作/查询,它应该只需要一点时间就可以完成。但看起来它只是在那里闲置。我在 $worker->run() 之后直接调用 $worker->stop() 但它没有到达那里。