如何使用 phpunit 测试邮件发送?

我有一个可邮寄类,用于向用户发送电子邮件,效果很好。我想写一些 phpunit 测试来检查邮件是否真的发送了。不幸的是,我在文档中找不到很好的解释。


我的可邮寄课程:


class UserInvite extends Mailable

{

    use Queueable, SerializesModels;


    public $user;

    public $inviteMessage;


    /**

     * Create a new message instance.

     *

     * @param User $user

     * @param string $inviteMessage

     */

    public function __construct(User $user, string $inviteMessage)

    {

        $this->user = $user;

        $this->inviteMessage = $inviteMessage;

    }


    /**

     * Build the message.

     *

     * @return $this

     */

    public function build()

    {

        return $this->view('emails.mail');

    }

}

测试:


/** @test */

public function it_sends_invite()

{

    Mail::fake();

    $user = factory(User::class)->create();

    $inviteMessage = 'test';


    Mail::assertSent(new UserInvite($user, $inviteMessage));

}

错误:


ErrorException: 类 App\Mail\UserInvite 的对象无法转换为字符串


解决方案:


/** @test */

    public function it_sends_invite()

    {

        Mail::fake();


        $user = factory(User::class)->create();


        Mail::to($user)->send(new UserInvite($user, 'message'));


        Mail::assertSent(UserInvite::class);

    }



慕田峪4524236
浏览 226回答 1
1回答

慕码人8056858

在测试发送的邮件时,您不会传递整个可邮寄的实例。PHPUnit 无论如何都无法比较完整的对象。相反,您只需传递完全限定的类名:// use App\Mail\UserInvite;Mail::assertSent(UserInvite::class);
打开App,查看更多内容
随时随地看视频慕课网APP