Отправить письмо с TDD Laravel 5.6 - PullRequest
0 голосов
/ 01 мая 2018

Я делаю регистрацию пользователя

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) Когда пользователь нажимает на свою электронную почту, он вызывает метод, в котором передается токен активации для активации своей учетной записи

1 Ответ

0 голосов
/ 10 апреля 2019
  1. По моему мнению, вы должны использовать поддельные письма, которые будут препятствовать отправке почты. Затем вы можете утверждать, что почтовые сообщения были отправлены пользователям и даже проверять полученные данные.

    пожалуйста, прочитайте документы по Laravel: https://laravel.com/docs/5.6/mocking#mail-fake

  2. Должен существовать маршрут, который обрабатывает токен активации и функциональность, поэтому попробуйте получить токен и маршрут вызова с определенным токеном

Примечание. Как разработчику, мы должны убедиться, что наш код работает, что подтверждают наши тесты. Отправка и доставка электронной почты не должны покрываться, как они считают, что они работают должным образом (любым поставщиком услуг электронной почты).

...