【发布时间】:2018-04-16 14:06:27
【问题描述】:
如何测试在函数调用期间分派了事件?
public function updateUser() {
//Do some update stuff
$event = new UserUpdated($user);
$event->attach([
new SendEmailAddressChangeEmail($emailAddress),
new SendEmailAddressChangeEmail($oldEmailAddress),
]);
$event->dispatch();
}
除了设置电子邮件地址并查看是否发送了电子邮件之外,我如何(使用 PHP 单元)检查调度程序是否实际上正在调度这些事件?我假设我需要创建某种模拟,但我不确定如何为完全不相关的代码创建模拟。
UserUpdated 事件代码:
class UserUpdated extends BaseEvent
{
public $user;
public function __construct(User $user) {
$this->user = $user;
}
}
以及相关的 SendEmailAddressChanged Handler 代码:
class SendEmailAddressChangeEmail implements Contracts\HandlerInterface
{
protected $emailAddress;
public function __construct($emailAddress) {
$this->emailAddress = $emailAddress;
}
public function handle($event) {
EmailUtils::sendEmailAddressChangeEmail($this->emailAddress, $event->user->userName, $event->user->userID);
}
}
【问题讨论】:
标签: php unit-testing phpunit