• Время чтения ~1 мин
  • 05.06.2025

Laravel представляет метод assertFailedWith для более точного тестирования сбоев заданий в очереди, позволяя разработчикам точно проверять, как и почему задания терпят неудачу, а не просто подтверждать произошедший сбой.

Метод assertFailedWith поддерживает несколько типов утверждений для комплексного тестирования сбоев заданий:

use App\Jobs\ProcessDocument;
use App\Exceptions\ProcessingException;
$job = (new ProcessDocument)->withFakeQueueInteractions();
// Test with message
$job->assertFailedWith('processing failed');
// Test with exception class
$job->assertFailedWith(ProcessingException::class);
// Test with exception instance
$job->assertFailedWith(new ProcessingException);
// Test with specific message
$job->assertFailedWith(new ProcessingException(message: 'invalid format'));
// Test with message and code
$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 позволяет проводить всестороннее тестирование сбоев заданий, проверяя определенные условия сбоя, делая наборы тестов более надежными и помогая разработчикам обеспечить надлежащую обработку ошибок в своих рабочих очередях.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297

Мы сбиваем «шахеды» каждый день. Каждое сбитие — спасённые жизни. Нам нужна мобильность: бус или прицеп. Каждый донат = ещё одна ночь под защитой.

🚐 Сбор на микроавтобус для моего экипажа, полк 1020 🎯 Цель: 500 000 ₴
🔗 Ссылка на банку 💳 4441 1111 2546 4663