Генерація HTTP-фікстур на основі реальних API-викликів у Laravel

Перекладено ШІ 0 Laravel News 26 квітня, 2025

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

Пакет HTTP Fixtures для Laravel створює фейкові JSON-відповіді для зовнішніх API під час тестування за допомогою методу Http::fake(). Це значно спрощує процес створення мок-відповідей, інтегруючи FakerPHP для генерації реалістичних тестових даних.

Генерувати фейкові HTTP-відповіді може бути складно, але цей пакет робить це простим: ви можете створити фіктивну відповідь на основі реального HTTP-запиту у вашому тесті:

use Gromatics\Httpfixtures\Services\HttpResponseRecorder;
use Illuminate\Support\Facades\Http;
 
it('creates an HTTP Fixture from a real JSON request', function () {
    Http::record();
    Http::get('https://api.stackexchange.com/2.2/search?order=desc&sort=activity&intitle=perl&site=stackoverflow&limit=1');
    HttpResponseRecorder::recordedToHttpFixture();
});

Вищенаведений код створить фікцію у директорії tests/Fixtures, а дані налаштуються за допомогою Faker у класі фікції, який можна повторно використовувати. Також доступна можливість створювати фікції з JSON-файлу або через команду Artisan:

public function definition(): array
{
    return [
        'items' => [
            0 => [
                'tags' => [
                    0 => $this->faker->word(),
                    1 => $this->faker->word(),
                    2 => $this->faker->word(),
                ],
                'owner' => [
                    'reputation' => $this->faker->numberBetween(10, 99),
                    'user_id' => $this->faker->numberBetween(1000000, 9999999),
                    'user_type' => $this->faker->word(),
                    'profile_image' => $this->faker->word(),
                    'display_name' => $this->faker->name(),
                    'link' => $this->faker->url(),
                ],
            ],
            // ...
        ],
    ];
}

Після того як ви створите фікції, їх можна використовувати у тестах, наприклад:

Http::fake(["https://api.stripe.com/v1/*" => Http::response(
    new StripeFixture()->toJson(),  200),
]);
 
// Перезапишіть значення за допомогою нотації з крапками
Http::fake(["https://api.stripe.com/v1/*" => Http::response(
    new StripeFixture(['items.0.tags' => ["my-tag"]])->toJson(),  200),
]);

# Основні функції

  • Запис фікційних класів з живих HTTP-запитів
  • Створення фікції з JSON-файлу
  • Генерація нової фікції через команду Artisan пакету
  • Контроль виходу фікцій у форматах JSON, XML або масиву
  • Перезапис конкретних ключів за допомогою нотації з масиву
  • І не тільки...

Детальніше про цей пакет, інструкції щодо встановлення та джерела коду можна знайти на GitHub.

Популярні

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

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

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

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

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!

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

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення