Testing 使用TDD Laravel 5.6发送电子邮件

Testing 使用TDD Laravel 5.6发送电子邮件,testing,laravel-5,phpunit,tdd,Testing,Laravel 5,Phpunit,Tdd,我正在做用户注册 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 ActivationAcco

我正在做用户注册

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) 当用户单击他的电子邮件时,他调用一个方法,在该方法中传递激活令牌以激活他的帐户

  • 在我看来,你应该使用邮件伪造,这将阻止邮件被发送。然后,您可以断言邮件已发送给用户,甚至可以检查他们收到的数据

    请阅读laravel文件:

  • 必须有一个处理激活令牌和功能的路由,因此请尝试使用特定令牌获取令牌和呼叫路由

  • 注意:作为一名开发人员,我们需要确保我们的代码能够正常工作,我们的测试正在确认、发送和发送电子邮件,但不应涵盖这些代码,因为它们被认为能够正常工作(由任何电子邮件服务提供商提供)