我正在尝试在 Laravel 5.4 的浏览器测试中测试邮件。
我在回调函数InvitationTest
内的一个类中有这段代码:browse
\Mail::fake();
$browser->visit('projects')
->press('etc.')
\Mail::assertSent(InvitationMail::class, function ($mail) use ($project) {
return $mail->invitation->project->id == $project->id;
});
我可以看到邮件是在日志中发送的:
[2017-04-06 15:36:10] local.INFO:邀请 xxxx-yyyy-zzz-aa-bb 开始
[2017-04-06 15:36:10] local.DEBUG:消息 ID:<xxx@ yyy.dev>
日期:2017 年 4 月 6 日星期四 15:36:10 +0200
主题:你好世界 :)
但是运行php artisan dusk
我得到了:
1) Tests\Browser\InvitationTest::testCreateInvitation
未发送预期的 [App\Mail\InvitationMail] 可邮寄。
断言 false 为 true 失败。
邮件已排队,但在我的设置中,.env.dusk.local
我已将队列设置为同步(并将邮件设置为日志):
QUEUE_DRIVER=sync
MAIL_DRIVER=log
所以一切都应该没问题。难道我做错了什么?为什么黄昏说邮件没有发送?
重要提示:邮件不是直接通过Controller发送的,而是创建了一个延迟的作业,这个作业会发送邮件。延迟的作业是过去发送的,因此可能没有影响。需要明确的是:控制器调度一个作业,然后该作业发送多封邮件。