alnutile/fixtures

Help with saving and getting JSON files for testing APIs

0.0.4 2023-03-08 09:55 UTC

This package is auto-updated.

Last update: 2024-08-23 17:47:34 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

TL;DR

For writing tests and mocking Http responses using files saved in my tests/fixtures folder. Yes some people hit the real API and this has it's place but when working with APIs it is nice and faster not to hit the API for a lot of reasons.

Overview

For all my projects that talk to APIs I will save copies of the API results to my tests folder and use that data to test against.

For example if I GET "https://foo.com/api/bar" and get back:

{
    "baz": "boo"
}

Then I save that as a file to my tests/fixtures/foo_get_response.json

Then in my test I will mock it with Http or other tool

$data = get_fixture('foo_get_response.json')
Http::fake(
    [
        'foo.com/*' => Http::response($data, 200)
    ]
);

Before I had this helper I would have to write this all out:

$data = File::get(base_path(sprintf(
            'tests/fixtures/%s',
            $file_name
        )));

$data = json_decode($results, true);

Installation

You can install the package via composer:

composer require alnutile/fixtures

Then (since I can not figure out a way around this) add it to your composer.json file:

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            //some stuff is here
        },
        "files": [
            "vendor/alnutile/fixtures/src/helpers.php"
        ]
    },

The run:

composer dump

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.