我正在使用Symfony中的功能测试测试控制器操作。在这个测试中,我正在做这样的事情:如何在功能测试中测试事件是否已发出
$client->request(
'PUT',
'/api/nodes/',
$data
);
之后,我想测试某个事件是否已分派。我已经尝试过让以前分析器(并设置相应的配置),并检查数据的EventDataCollector
:
$client->enableProfiler();
$client->request(
'PUT',
'/api/nodes/' . $data[0]['id'] . '?webspace=sulu_io&language=en',
$data[0]
);
/** @var EventDataCollector $eventDataCollector */
$eventDataCollector = $client->getProfile()->getCollector('events');
可正常工作,但问题是,$eventDataCollector
只包含有关事件的数据,其一些听众实际上已经被执行。幸运的是,在这个特定情况下执行了一个事件监听器,但是我希望在没有任何事件监听器的情况下工作,因为我不能肯定地说这种情况会继续如此。
所以我的问题是,如果有一种方法来测试事件是否派发,即保存,即使没有附加事件监听器。
尝试使用'$ client-> get('event_dispatcher') - > addEventListener(...)'来做到这一点,但是自从有一段时间我遇到内核似乎为每个请求重置的问题......会很好在这个单独的测试中只包含这个监听器,我想你建议通过配置添加监听器,对吧? –
是的。取决于测试套件的组织方式和测试内容。如果您使用来自Symfony项目的内核进行测试,则需要在项目级别(测试环境)注册它。您也可以创建专门用于测试的内核。如果你正在隔离测试一个包,这很有用。 –