Laravel вводить метод assertFailedWith, який дозволяє більш точно тестувати збої в обробці завдань у черзі. Це дає можливість розробникам перевірити не лише факт збою, а й зрозуміти, як і чому цей збій відбувся.
Метод assertFailedWith підтримує різні типи асерцій для всебічного тестування збоїв завдань:
use App\Jobs\ProcessDocument;
use App\Exceptions\ProcessingException;
$job = (new ProcessDocument)->withFakeQueueInteractions();
// Тестування з повідомленням
$job->assertFailedWith('processing failed');
// Тестування з класом винятку
$job->assertFailedWith(ProcessingException::class);
// Тестування з екземпляром винятку
$job->assertFailedWith(new ProcessingException);
// Тестування з конкретним повідомленням
$job->assertFailedWith(new ProcessingException(message: 'invalid format'));
// Тестування з повідомленням та кодом
$job->assertFailedWith(new ProcessingException(message: 'timeout error', code: 408));
Цей метод також можна використовувати для інтеграційного тестування з зовнішніми сервісами:
class ExternalServiceJobTest extends TestCase
{
public function test_api_sync_handles_rate_limiting()
{
Http::fake(['*' => Http::response([], 429)]);
$job = new SyncExternalDataJob($apiEndpoint)
->withFakeQueueInteractions();
$job->handle();
$job->assertFailedWith(
new RateLimitException('API rate limit exceeded', 429)
);
}
public function test_webhook_delivery_handles_invalid_endpoint()
{
$job = new DeliverWebhookJob('invalid-url', $payload)
->withFakeQueueInteractions();
$job->handle();
$job->assertFailedWith(
new InvalidEndpointException('Invalid webhook URL format')
);
}
}
Метод assertFailedWith забезпечує всебічне тестування збоїв завдань, перевіряючи конкретні умови збоїв. Це робить тестові набори надійнішими та допомагає розробникам гарантувати коректну обробку помилок у їхніх робітниках черги
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю