【发布时间】:2019-09-10 09:04:32
【问题描述】:
我在使用侦听器测试 ZF3 应用时遇到问题。目前监听器像这样附加在 module.php onBootsrtap 中
$eventManager = $event->getApplication()->getEventManager();
$serviceManager->get(\App\Listener\OfferListener::class)->attach($eventManager);
在监听器中附加函数
public function attach(EventManagerInterface $events, $priority=1)
{
$this->listeners[] = $events->getSharedManager()->attach('*', 'offerChange', [$this, 'onOfferChange']);
}
问题是在 testcontroller 创建模拟对象之前初始化了侦听器。调用时
$this->getApplicationServiceLocator()
为了在测试控制器中配置ServiceManager进行测试,监听器工厂正在调用并且测试失败,因为它依赖于数据库映射器。 也许这种方法不好。 谁能帮帮我?
【问题讨论】:
-
你在找什么,here you'll find :)
-
感谢您的回答!但它不完全是我需要的。我的解决方案是监听器附加在 EVENT_DISPATCH 事件中。所以在引导程序存根被创建并且测试工作正常。
-
当然是这样。在
attach()函数中,您只需附加到该事件而不是答案中提供的事件。
标签: unit-testing phpunit listener zend-framework3