2017-04-25 45 views
0

我在Laravel項目中爲忘記密碼功能創建了一個RESTFUL API。我完成了它。測試事件在Laravel發送電子郵件

但是,我不知道如何建立unittest來測試事件發送電子郵件發生?

我該如何構建它?

+1

這是一個很好的問題,但如果你可以發佈任何代碼將得到加強。你通常不會寫一個郵件發送單元測試(你希望你的單元測試開始郵件嗎?),但驗證發送電子郵件的請求正確提出與正確的主體/主題等可能是有用的 –

+0

謝謝@mark_h,是的,我想驗證發送電子郵件的請求是否正確提出。我如何編碼? –

回答

0
$mock = Mockery::mock('Swift_Mailer'); 
$this->app['mailer']->setSwiftMailer($mock); 
$mock->shouldReceive('send')->once() 
    ->andReturnUsing(function($msg) { 
     $this->assertEquals('My subject', $msg->getSubject()); 
     $this->assertEquals('[email protected]', $msg->getTo()); 
     $this->assertContains('Some string', $msg->getBody()); 
    }); 

你可以看到這一點: Laravel unit testing emails

+0

感謝您的回覆。有了這個代碼snipset,運行testcase時,它有一個錯誤:「Mockery \ Exception \ InvalidCountException:來自Mockery_0_Illuminate_Support_Testing_Fakes_MailFake的方法send()應該被調用1次,但被調用0次」。 –