如何使用laravel队列邮件编写单元测试?

Fan*_*Fan 2 email testing queue tdd laravel

我已经完成了按队列发送邮件的代码,并且可以正常工作,并且我想为此编写一个测试(只是想测试应该正常发送而不会按队列失败的邮件,然后再发送给合适的人),但是如何?

Mail::to($user->email)->queue(new Welcome($user));
Run Code Online (Sandbox Code Playgroud)

maz*_*dlx 5

您将执行以下操作(取决于您的设置):

<?php

namespace Tests\Feature;

use App\User;
use App\Mail\Welcome;
use Illuminate\Support\Facades\Mail;

class SendInvitationEmailTest extends TestCase
{
    /** @test */
    function mails_get_queued()
    {
        Mail::fake();
        $user = factory(User::class)->create();

        $this->post('/route/to/send/the/welcome/mail');

        Mail::assertQueued(Welcome::class, 1);
        Mail::assertQueued(Welcome::class, function ($mail) use ($user) {
            return $mail->user->id === $user->id;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)