Генерація 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),
]);

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

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

Популярні

Logomark Logotype

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

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

Logomark Logotype

Що нового в PHP 8.5

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

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!