2016-07-04 26 views
1

私は2つの状況に直面しています。ユニットテストLaravel 5のメールキュー

第1回 - Laravelのメールキュークラスをどのようにユニットテストしますか?

私がテストしたいコードはこれです:

// Create new customer record 
$account = $this->create(['account_id' => $account->id]); 

// Get email address to send welcome email. 
$email = $data['email']; 

// Email Subject 
$subject = $this->word('emails.welcome.subject'); 

$this->mailQueue->queue('emails.welcome', 
    ['some_data' => 'data'], 
    function ($message) use ($email, $subject) { 
     $message->to($email)->subject($subject); 
    }, true); 

return $account; 

私はIlluminate\Contracts\Mail\MailQueueクラスを使用するときに私のために動作しますshouldReceive方法がどこにあるか知っていただきたいと思います。

今私は、このために、このユニットテストを持っている:

/** 
* @tests 
*/ 
public function it_should_sign_up_a_new_user() { 
    // MailQueue::shouldReceive() does not exist. 

    list($account, $email) = $this->getAccountData(); 
    $request = array_merge($account, $email); 
    $account['password'] = $this->hash($account['password']); 

    $this->post('/signup', $request, $this->header) 
     ->assertResponseOk() 
     ->seeInDatabase('account', $account) 
     ->seeInDatabase('email', $email); 
} 

第二 - ユニットテストはphp artisan queue:listenまたはqueue:workを必要としないのはなぜ?

ユニットテストを実行するたびに、queue:listenが実行されていなくても電子メールが送信されます。私はこの素晴らしい魔法がどのように起こるかを理解したいと思います。

+0

を[モックを使用した単体テストLaravel 5メール]の可能性のある重複します(http:すなわち

Mail::queue('emails.welcome', $data, function($message) { $message->to('[email protected]', 'John Smith')->subject('Welcome!'); }); 

メールファサードは、あなたが行うことができる必要がありますので、それに組み込まれてshouldReceiveを持っています://stackoverflow.com/questions/31120567/unittesting-laravel-5-mail-using-mock) –

答えて