• Час читання ~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