РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1250 of 1392 menu

Метод assertSent

Метод assertSent применяется к экземпляру фасада Mail в тестах для проверки отправки писем. Первым параметром передаётся класс отправляемого письма. Вторым параметром - замыкание, которое получает экземпляр письма и возвращает true или false в зависимости от условий проверки. Если замыкание не передано, проверяется только факт отправки письма указанного класса.

Синтаксис

<?php Mail::assertSent($mailableClass, $callback); ?>

Пример

Давайте проверим, что при регистрации пользователя отправляется приветственное письмо:

<?php namespace Tests\Feature; use Tests\TestCase; use Illuminate\Support\Facades\Mail; use App\Mail\WelcomeMail; use App\Models\User; class RegistrationTest extends TestCase { public function test_welcome_email_is_sent() { Mail::fake(); $user = User::factory()->create([ 'email' => 'user@example.com', 'name' => 'John Doe' ]); Mail::assertSent(WelcomeMail::class); $res = 'Welcome email was sent successfully'; echo $res; } } ?>

Результат выполнения кода:

"Welcome email was sent successfully"

Пример

Давайте проверим, что письмо отправлено конкретному пользователю с определённым содержимым:

<?php namespace Tests\Feature; use Tests\TestCase; use Illuminate\Support\Facades\Mail; use App\Mail\OrderShipped; use App\Models\Order; class NotificationTest extends TestCase { public function test_order_shipped_email_sent_to_correct_user() { Mail::fake(); $order = Order::factory()->create([ 'email' => 'customer@example.com', 'total' => 100 ]); // Здесь обычно вызывается метод, который отправляет письмо // Например, OrderController::ship($order) Mail::assertSent(OrderShipped::class, function ($mail) use ($order) { return $mail->hasTo($order->email) && $mail->order->id === $order->id; }); $res = 'Order shipped email verified'; echo $res; } } ?>

Результат выполнения кода:

"Order shipped email verified"

Пример

Давайте проверим, что при заказе отправляется письмо с подтверждением, и оно содержит правильную сумму:

<?php namespace Tests\Feature; use Tests\TestCase; use Illuminate\Support\Facades\Mail; use App\Mail\OrderConfirmation; use App\Models\Order; class OrderTest extends TestCase { public function test_order_confirmation_has_correct_total() { Mail::fake(); $order = Order::factory()->create([ 'total' => 250 ]); // Вызываем метод, отправляющий письмо // $this->post('/orders', $order->toArray()); Mail::assertSent(OrderConfirmation::class, function ($mail) use ($order) { return $mail->order->total === $order->total && $mail->order->id === $order->id; }); $res = 'Order confirmation contains correct total'; echo $res; } } ?>

Результат выполнения кода:

"Order confirmation contains correct total"

Смотрите также

  • метод fake,
    который подменяет реальную отправку писем на тестовую
  • метод assertSentTo,
    который проверяет отправку уведомлений конкретному получателю
  • класс Mail,
    который предоставляет функциональность для тестирования почты
  • метод assertPushed,
    который проверяет отправку задач в очередь
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить