Пакет 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.