我正在用phpunit为我的cakephp模型编写单元测试。我的模型调度这样的事件:
private function __dispatchEmailEvent(){
$Event = new CakeEvent(
'Model.Order.afterSaveCustomersOrder',
$this,
array()
);
$this->getEventManager()->dispatch($Event);
}
我可以在我的测试函数中编写什么来检查此事件是否已正确分派?
public function testEventDispatched(){
}
答案 0 :(得分:4)
有很多方法......我个人主要使用的方法是注册一个监听器并修改一个引用的变量,可以在调用触发事件的动作之后对其进行测试,例如
$model = ClassRegistry::init('TableName');
$dispatched = false;
$model->getEventManager()->attach(
function (CakeEvent $event) use ($model, &$dispatched) {
$this->assertSame($model, $event->subject());
$this->assertEquals([], $event->data);
$dispatched = true;
},
'Model.Order.afterSaveCustomersOrder'
);
$model->invokeWhateverTriggersTheEvent();
$this->assertTrue($dispatched);
*未经测试,至少需要PHP 5.4