Laravel упрощает тестирование HTTP-взаимодействия, благодаря лаконичному и интуитивно понятному синтаксису для имитирования HTTP-ответов. Такой подход не только минимизирует сложность кода, но и улучшает читаемость ваших тестовых примеров.

Мок-данные

Мок-данные или мокинг данных - это фиктивные или смоделированные данные имитирующие реальные данные, с которыми бы работал ваш сервис. Эти данные используются для изолированного тестирования модуля, внутри вашего приложения.

Класс Illuminate\Support\Facades\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 test_service_communication()
    {
        Http::fake([
            // String responses
            'api.notifications.com/*' => 'Message sent',

            // Array responses (automatically converted to JSON)
            'api.products.com/*' => [
                'products' => [
                    ['id' => 1, 'name' => 'Laptop'],
                    ['id' => 2, 'name' => 'Phone']
                ]
            ],

            // Status code responses
            'api.status.com/check' => 200,
            'api.deprecated.com/*' => 410,

            // Mixed response types for related endpoints
            'api.orders.com/active' => ['status' => 'processing'],
            'api.orders.com/error' => 400,
            'api.orders.com/message' => 'System unavailable'
        ]);

        // Test assertions
        $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-мокинга.
Читайте также
Адаптивная вёрстка фотографий с помощью Flexbox

Адаптивная вёрстка фотографий с помощью Flexbox

Как легко вывести галерею изображений разных размеров в виде адаптивных бесшовных блоков не использую JavaScript. 

Обновление остатков товара на складе в 1С Битрикс

Обновление остатков товара на складе в 1С Битрикс

Как правильно обновлять остатки товара на сайта под управлением CMS 1С Битрикс.

Английский для программистов

Английский для программистов

Почему IT-специалисту необходимо освоить английский язык? Разбираем в статье.


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке