Testen of e-mail verificatie is gestuurd na registeren in Laravel 8

Kleine post hoe je kan testen of er verificatie e-mail uitgaat na het registeren in laravel 8


<?php

namespace Tests\Feature;

use App\Models\User;
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Notification;
use Tests\TestCase;

class testRegistrationEmailNotification extends TestCase
{
use DatabaseMigrations, RefreshDatabase;

/**
     * @test
     */
    public function after_registration_a_confirmation_email_will_be_send_to_confirm_your_account() {
        
        $newUser = User::factory()->make()->toArray();

        Notification::fake();
        Notification::assertNothingSent();

        $this->post('/register', $newUser);

        $user = User::firstWhere('email', $newUser['email']);
        Notification::assertSentTo($user, VerifyEmail::class);
    }
}

Wat doet de test

  • Regel 22: we maken een nieuwe gebruiker aan maar registeren deze nog niet
  • Regel 24: we zeggen dat we geen echte notificaties willen verturen
  • Regel 35: we doen een aanname/test of er geen notificaties zijn verstuurd
  • Regel 37: we registeren de nieuwe gebruiker
  • Regel 29: we halen de nieuwe gebruiker op van de database
  • Regel 30: we doen een aanname/test of deze gebruiker een e-mail verificatie notificatie heeft gekregen

Plaats een reactie