我在做注册用户
public function register(RegistrationUser $request)
{
$user = $this->usersRepo->create($request->all());
$user->activation_token = str_random(48);
$user->save();
Mail::to($user->email)->queue(new ActivationAccount($user->first_name, $user->last_name, $user->email, $request->input('password'), $url));
return redirect()->route('successful.registration')
}
我的注册测试是:
public function it_creates_a_new_user()
{
$this->withExceptionHandling();
$response = $this->get(route('register'))
->assertStatus(200);
$this->post('register', [
'first_name' => 'Juan',
'last_name' => 'Lopez',
'email' => 'jlopez@gmail.com',
'password' => 'secret',
'activation_tone' => str_random(48)
])->assertRedirect(route('successful.registration'));
$this->assertDatabaseHas('users', [
'email' => 'jlopez@gmail.com',
]);
}
我有两个问题:
1)如何编写测试以发送注册电子邮件并验证其是否发送和到达?
2)当用户点击他的电子邮件时,他会调用一种方法,其中传递激活令牌以激活他的帐户
答案 0 :(得分:1)
我认为您应该使用伪造的邮件,这将阻止发送邮件。然后,您可以断言可邮寄邮件已发送给用户,甚至检查了他们收到的数据。
请阅读laravel文档:https://laravel.com/docs/5.6/mocking#mail-fake
必须存在处理激活令牌和功能的路由,因此请尝试获取令牌并使用特定令牌调用路由
注意:作为开发人员,我们需要确保我们的代码可以正常运行,并且测试已确认该消息,不应涵盖发送和传递电子邮件,因为它们被认为可以正常工作(任何电子邮件服务提供商)。