Спрощене мокування HTTP-відповідей у тестах Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 березня, 2025
Досліджуйте, як Laravel спрощує тестування HTTP-взаємодій за допомогою елегантного синтаксису для фейкових відповідей. Чи готові ви підвищити свою продуктивність у тестуванні, зосередившись на бізнес-логіці? Читайте далі!

Laravel спростив тестування HTTP-взаємодій завдяки елегантному скороченому синтаксису для фейків HTTP-відповідей. Цей підхід суттєво зменшує обсяг коду, роблячи ваші тестові моки більш інтуїтивними.

Основна реалізація пропонує кілька скорочень для типів відповідей:

use Illuminate\Support\Facades\Http;

Http::fake([
    'google.com' => 'Hello World',
    'github.com' => ['foo' => 'bar'],
    'forge.laravel.com' => 204,
]);

Цей синтаксис чудово працює в комплексних тестових сценаріях:

class ApiIntegrationTest extends TestCase
{
    public function testServiceCommunication()
    {
        Http::fake([
            // Відповіді у вигляді рядків
            'api.notifications.com/*' => 'Message sent',
            
            // Відповіді у вигляді масивів (перетворюються на JSON)
            'api.products.com/*' => [
                'products' => [
                    ['id' => 1, 'name' => 'Laptop'],
                    ['id' => 2, 'name' => 'Phone']
                ]
            ],

            // Відповіді зі статус-кодами
            'api.status.com/check' => 200,
            'api.deprecated.com/*' => 410,

            // Різні типи відповідей для пов'язаних кінцевих точок
            'api.orders.com/active' => ['status' => 'processing'],
            'api.orders.com/error' => 400,
            'api.orders.com/message' => 'System unavailable'
        ]);

        // Тестування з перевірками
        $response = Http::get('api.notifications.com/send');
        $this->assertEquals('Message sent', $response->body());

        $products = Http::get('api.products.com/list');
        $this->assertCount(2, $products['products']);

        $status = Http::get('api.status.com/check');
        $this->assertTrue($status->successful());
    }
}

Цей короткий синтаксис значно покращує підтримуваність тестів, зменшуючи когнітивне навантаження під час читання, що дозволяє зосередитися на бізнес-логіці, а не на деталях HTTP-мокування.

Популярні

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку

Logomark Logotype

Використання повнотекстового пошуку в Laravel

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