laravel - 使用 Laravel 5.4 模拟邮件(黄昏)

标签 laravel laravel-5 laravel-5.4 browser-testing laravel-dusk

我正在尝试在 Laravel 5.4 的浏览器测试中测试邮件。

我在 browse 回调函数内的 InvitationTest 类中有以下代码:

\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: Invitation xxxx-yyyy-zzz-aa-bb started
[2017-04-06 15:36:10] local.DEBUG: Message-ID: <xxx@yyy.dev>
Date: Thu, 06 Apr 2017 15:36:10 +0200
Subject: hello world :)

但是运行 php artisan dusk 我得到:

1) Tests\Browser\InvitationTest::testCreateInvitation
The expected [App\Mail\InvitationMail] mailable was not sent.
Failed asserting that false is true.

邮件已排队,但在我的 .env.dusk.local 中,我已将队列设置为同步(并将邮件设置为日志):

QUEUE_DRIVER=sync
MAIL_DRIVER=log

所以一切一定都很好。难道我做错了什么?为什么dusk说邮件未发送?

重要说明:邮件不是直接通过 Controller 发送的,而是创建了一个延迟作业,并且该作业发送邮件。延迟的作业已发送过去,因此可能不会产生影响。需要明确的是: Controller 调度一个作业,然后该作业发送多封邮件。

最佳答案

不幸的是, mock 不适用于 Laravel Dusk。不过,关于这个问题有两个问题尚未解决:

关于laravel - 使用 Laravel 5.4 模拟邮件(黄昏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257074/

相关文章:

Laravel 符号链接(symbolic link)不起作用

php - 拉拉维尔 ORM : select distinct by DATE for each user

php - 在 laravel 5.4 中选择下拉列表的选定值

laravel - 在 Laravel 5.7 中获取当前 URL

php - Laravel 尝试获取非对象一对一关系的属性

android - 单击网站上的 url 后打开应用程序 Skype、iMessage、WhatsApp 出现问题?

laravel-5 - 使用 Laravel 5 的 Paypal 的 IPN 模拟器

php - Laravel 流利与 Eloquent

php - Laravel 如何为 where like 查询动态数组列名称?

php - 如何在 Laravel 5.6 中将第三方 API 数据转换为集合资源?