【问题标题】:How to correctly configure listener?如何正确配置监听器?
【发布时间】: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


【解决方案1】:

我的解决方案是监听器附加在 EVENT_DISPATCH 事件中。因此在引导程序中创建存根并且测试工作正常

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 2020-12-25
    • 2020-01-16
    • 1970-01-01
    • 2019-07-23
    • 2011-10-10
    • 2015-02-27
    • 2016-04-09
    • 1970-01-01
    相关资源
    最近更新 更多