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

Метод assertSentTo

Метод assertSentTo применяется к фасаду Notification в тестах Laravel и позволяет проверить, что уведомление было отправлено определённому получателю. Первым параметром передаётся получатель (модель или коллекция моделей), вторым - класс уведомления. Третий параметр - необязательная функция обратного вызова для дополнительной проверки данных уведомления. Если уведомление не было отправлено, тест проваливается.

Синтаксис

<?php Notification::assertSentTo($recipient, $notificationClass, $callback); ?>

Пример

Давайте проверим, что уведомление 'InvoicePaid' было отправлено пользователю с id равным 1:

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\User; use App\Notifications\InvoicePaid; use Illuminate\Support\Facades\Notification; class NotificationTest extends TestCase { public function test_invoice_paid_notification_sent() { Notification::fake(); $user = User::find(1); $user->notify(new InvoicePaid()); Notification::assertSentTo( $user, InvoicePaid::class ); } } ?>

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

"Test passed"

Пример

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

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\User; use App\Notifications\InvoicePaid; use Illuminate\Support\Facades\Notification; class NotificationTest extends TestCase { public function test_notification_sent_to_multiple_users() { Notification::fake(); $users = User::where('active', 1)->get(); Notification::send($users, new InvoicePaid()); Notification::assertSentTo( $users, InvoicePaid::class ); } } ?>

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

"Test passed"

Пример

Давайте используем третий параметр для проверки данных уведомления с помощью функции обратного вызова:

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\User; use App\Notifications\InvoicePaid; use Illuminate\Support\Facades\Notification; class NotificationTest extends TestCase { public function test_notification_with_custom_callback() { Notification::fake(); $user = User::find(1); $user->notify(new InvoicePaid(['amount' => 100])); Notification::assertSentTo( $user, InvoicePaid::class, function ($notification, $channels) { return $notification->amount === 100; } ); } } ?>

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

"Test passed"

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

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