作者:谁能吿诉我 | 来源:互联网 | 2023-05-17 12:45
我正在为一个模型编写测试,该模型在其中一个属性发生更改时触发事件.不幸的是,我无法找出测试它的最佳方法.型号代码是:
class Foo extends Eloquent {
public function setNameAttribute($value) {
$this->attributes['name'] = $value;
if($this->exists && ($this->original['name'] != $value)) {
Event::fire('foo.NameChange', array($this));
}
}
}
我对事件火灾的初步测试:
$bar = Foo::first();
Event::shouldReceive('fire')->once()->with('foo.NameChange', array($bar));
$bar->name = 'test';
问题是,如果出现以下情况,上述测试仍然通过:
根本没有发生任何事件
我正在第二次更改模型的名称(这应该是第二次触发事件,对吧?)
如果一个foo.NameChange
事件发生,我怎样才能使我的测试通过?所有其他的senario都不应该通过我的测试.