【发布时间】:2016-06-12 10:53:08
【问题描述】:
我在 onBootstrap 方法的模块中设置了一个事件监听器(它检查用户权限):
// attach permission listener to route event
$eventManager = $e->getApplication()->getEventManager();
$sm = $e->getApplication()->getServiceManager();
$permissionsListener = $sm->get('MyModule\Listener\Permissions');
$permissionsListener->attach($eventManager);
在普通应用中可以正常工作。
对于单元测试,如果我可以禁用此权限系统以轻松检查所有页面是否正常工作,而不必担心设置假管理员用户,那就太好了。
但我不知道该怎么做。
在扩展 AbstractHttpControllerTestCase 的测试中,我做了这样的事情:
// detach permission listener to route event
$sm = Bootstrap::getServiceManager();
$eventManager = $this->getApplication()->getEventManager();
$permissionsListener = $sm->get('MyModule\Listener\Permissions');
$permissionsListener->detach($eventManager);
但这不会禁用权限系统。如何做到这一点?
【问题讨论】:
-
你试过模拟权限监听器吗?我们的项目中有类似的设置。我们在单元测试中所做的也是模拟监听器
标签: php unit-testing events zend-framework2