我有一个 slack 通知类,每当用户执行激活过程时,它都会在我们公司的 slack 帐户内通过特定 channel 发送一条消息。
该系统可以工作,但它是手动测试的,这并不酷。
通知由附加到 UserHasBeenActivated
事件的监听器发送,监听器如下:
public function handle(UserHasBeenActivated $event)
{
Notification::route("slack", config("services.slack.user.url"))
->notify(new UserActivated($event->user));
}
非常简单。这里的问题是通知是按需通知,因此很难测试...因为没有任何类型的文档说明如何测试按需通知!
此刻我被困在这里:
public function it_sends_a_notification_when_an_user_is_activated()
{
Notification::fake();
$user = factory(User::class)->states("deleted")->create();
$user->activate();
Notification::assertSentTo(
$user,
UserActivated::class
);
}
当然这个测试失败了,activate()
方法触发了事件 UserHasBeenActivated
并顺序地触发了所有的监听器,其中之一发送了相应的通知。
您知道如何测试按需通知吗?我是否缺少任何隐藏的 API?
最佳答案
对于新手
Laravel 在 v5.5.14
中引入了使用提供的 Notification::fake()
系统测试匿名通知的能力。
有关此新 功能的更多信息,请点击此处:https://github.com/laravel/framework/pull/21379
关于php - Laravel 按需测试通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46277323/