为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕田峪4524236 2021-12-03 19:45:06
我有一个可邮寄类,用于向用户发送电子邮件,效果很好。我想写一些 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);    }
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

在测试发送的邮件时,您不会传递整个可邮寄的实例。PHPUnit 无论如何都无法比较完整的对象。相反,您只需传递完全限定的类名:


// use App\Mail\UserInvite;


Mail::assertSent(UserInvite::class);


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 225 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信