Laravel: не удается запустить Notification::assertSentTo при тестировании команды ⇐ Php
-
Anonymous
Laravel: не удается запустить Notification::assertSentTo при тестировании команды
Laravel 9
В моем приложении Laravel уже проводились тесты, проверяющие отправку уведомлений. Типичный
Notification::fake(); $this->post('/forgot-password', ['email' => $user->email]); Уведомление::assertSentTo($user, ResetPassword::class); и некоторые другие подобные. Но... теперь, когда я тестирую уведомления, отправляемые при вызове команды, все происходит по-другому.
публичная функция testHandle_happyPath() { Уведомление::фейк(); $customer = CustomerFactory::new()->default()->create([ 'account_status' => AccountStatus::TRIAL, 'created_at' => Carbon::now()->subDays(28) ]); ConfigurationKey::PREVIOUS_DAYS_TO_NOTIFY_TRIAL_EXPIRY()->setInteger(2); $result = $this->artisan(NotifyTrialsToExpireCommand::class); $клиент->обновить(); $result->assertSuccessful(); Уведомление::assertSentTo($customer, TrialNextToExpireNotification::class); } Результат
Ожидаемое уведомление [App\Notifications\TrialNextToExpireNotification] не было отправлено.
В моей конфигурации phpunit уже есть , чтобы избежать связанных с этим проблем.
Я проверил это вручную, и это работает.
Очевидно, что это напрямую связано с использованием вызова $this->artisan. Какую вещь я мог игнорировать? Этот тип тестов должен быть подготовлен по-другому? Неужели нельзя протестировать таким способом?
Laravel 9
В моем приложении Laravel уже проводились тесты, проверяющие отправку уведомлений. Типичный
Notification::fake(); $this->post('/forgot-password', ['email' => $user->email]); Уведомление::assertSentTo($user, ResetPassword::class); и некоторые другие подобные. Но... теперь, когда я тестирую уведомления, отправляемые при вызове команды, все происходит по-другому.
публичная функция testHandle_happyPath() { Уведомление::фейк(); $customer = CustomerFactory::new()->default()->create([ 'account_status' => AccountStatus::TRIAL, 'created_at' => Carbon::now()->subDays(28) ]); ConfigurationKey::PREVIOUS_DAYS_TO_NOTIFY_TRIAL_EXPIRY()->setInteger(2); $result = $this->artisan(NotifyTrialsToExpireCommand::class); $клиент->обновить(); $result->assertSuccessful(); Уведомление::assertSentTo($customer, TrialNextToExpireNotification::class); } Результат
Ожидаемое уведомление [App\Notifications\TrialNextToExpireNotification] не было отправлено.
В моей конфигурации phpunit уже есть , чтобы избежать связанных с этим проблем.
Я проверил это вручную, и это работает.
Очевидно, что это напрямую связано с использованием вызова $this->artisan. Какую вещь я мог игнорировать? Этот тип тестов должен быть подготовлен по-другому? Неужели нельзя протестировать таким способом?
Мобильная версия