2017-08-19 56 views
1

我已經完成了按隊列發送郵件的代碼,並且它工作正常,我想爲它編寫一個測試(只想測試應該正常發送的郵件而不排隊失敗,和正確的人),但如何?如何用laravel隊列郵件編寫單元測試?

Mail::to($user->email)->queue(new Welcome($user)); 
+0

既然你已經使用了外牆你可以使用'Mocking'來查找哪些文檔[這裏](https://laravel.com/docs/5.4/mocking)。 – milo526

回答

1

你會做這樣的事情(根據您的設置):

<?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; 
     }); 
    } 
}