Покращте тестування HTTP помилок за допомогою методу requestException() у Laravel

Перекладено ШІ 1 Laravel News 03 червня, 2026

Laravel інтегрує нову можливість для тестування з методом requestException(), який спрощує створення виключень HTTP-клієнта для ефективнішого тестування помилок. Чи готові ви дізнатися, як цей метод змінив підхід до роботи з API у ваших проектах? Читайте далі, щоб дізнатися більше про покращення в тестуванні з Laravel

Laravel покращує можливості тестування для розробників завдяки методу requestException(), який спрощує створення виключень HTTP-клієнта для більш ефективного тестування помилок

Тестування взаємодії з зовнішніми API вимагає симуляції різних відповідей про помилки, щоб перевірити правильність обробки виключень. Раніше створення RequestException вимагало довгого та багатокрокового коду. Новий метод requestException() пропонує лаконічний і елегантний варіант:

use Illuminate\Support\Facades\Http;

// Створення виключення запиту з конкретним тілом відповіді та кодом статусу
$exception = Http::requestException(['error' => 'invalid_token'], 401);

// Створення виключення запиту лише з кодом статусу
$exception = Http::requestException(status: 500);

// Створення виключення запиту з заголовками
$exception = Http::requestException(
    ['message' => 'Too many requests'],
    429,
    ['X-RateLimit-Reset' => '30']
);

Поліпшення читабельності очевидне:

// Раніше: громіздкий, багатокроковий процес
$exception = new RequestException(
    new Response(
        Http::response(['code' => 'invalid_token'], 401)->wait()
    )
);

// Після: простий, односторонній підхід
$exception = Http::requestException(['code' => 'invalid_token'], 401);

Цей метод особливо покращує тестування сервісів, які взаємодіють із зовнішніми API:

class PaymentGatewayTest extends TestCase
{
    public function test_it_handles_api_authentication_errors()
    {
        Http::fake([
            'api.payment.com/*' => Http::response(['error' => 'Invalid API key'], 401),
        ]);

        // Тестуємо обробку 401 помилок сервісом
        $gateway = new PaymentGateway();
        $result = $gateway->processPayment($paymentData);

        $this->assertFalse($result->success);
        $this->assertEquals('authentication_failed', $result->error);

        // Тестуємо обробку виключень за допомогою конструкції try-catch
        try {
            // Мокаємо HTTP-клієнт, щоб він кинув виключення
            Http::fake(function () {
                throw Http::requestException(['error' => 'Invalid API key'], 401);
            });

            $gateway->processPaymentOrFail($paymentData);
            $this->fail('Виключення не було кинуто');
        } catch (PaymentAuthenticationException $e) {
            $this->assertEquals(401, $e->getStatusCode());
            $this->assertEquals('Invalid API key', $e->getErrorMessage());
        }
    }
}

Метод requestException() створює чистіші та легші для підтримки тести для обробки помилок у взаємодії з HTTP, підвищуючи якість коду та зменшуючи складність тестування

Популярні

Інше, що варто прочитати

18 Оновлено 02 червня, 2026

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!

53 Оновлено 02 червня, 2026

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

30 Оновлено 02 червня, 2026

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті