【发布时间】:2026-01-18 03:00:01
【问题描述】:
我在 Symfony 中创建了一个简单的测试用例。 因此,一个客户端应该侦听将在请求期间调度的事件。 但是什么都没有发生,因为请求有自己的范围,或者我不知道为什么我无法访问其中的调度程序。
$this->client = static::createClient();
self::$container = $this->client->getContainer();
$dispatcher = self::$container->get('event_dispatcher');
$dispatcher->addListener('example', function ($event) {
// Never executed
});
$this->client->request('POST', $endpoint, $this->getNextRequestParameters($i), [$file], $this->requestHeaders);
$this->client->getResponse();
监听器永远不会被调用。
当我稍微调试一下时,我发现通过spl_object_hash($dispatcher) 的对象哈希在*别上与request 级别内的不同。
所以看来request有自己的世界,不理会外面的一切。
但问题是我如何才能让我的听众进入这个“世界”?
【问题讨论】:
标签: unit-testing symfony phpunit symfony5 symfony-eventdispatcher