【发布时间】:2016-11-06 13:20:11
【问题描述】:
我正面临两种我想解决/理解的情况。
1st - 如何对 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,也会发送电子邮件。我想了解这种神奇的魔法是如何发生的。
【问题讨论】:
标签: php email queue phpunit laravel-5.2