下記のLaravelの送信メールをテストする一般的なコードでは、メールの件名($mail->subject)が空欄になりました。
$mail->hasTo(…)や$mail->hasCc(…)のアサートは正しく動作します。
public function testSendMail()
{
Mail::fake();
Mail::assertNothingSent();
// メールの送信コード...
Mail::assertSent(OrderShipped::class, function (OrderShipped $mail) {
return $mail->subject == "注文内容の確認";
});
}
Mailableのbuild()メソッドが実行されてなかったので、buildメソッドを実行してみました。
そうするとメールの件名($mail->subject)に値が設定され、テストができるようになりました。
public function testSendMail()
{
Mail::fake();
Mail::assertNothingSent();
// メールの送信コード...
Mail::assertSent(OrderShipped::class, function (OrderShipped $mail) {
$mail->build();
return $mail->subject == "注文内容の確認";
});
}