knutle/pest-mock-recorder

Lets you easily bind a mock to the service container that can flexibly record history every time it is used

v0.1.2 2022-06-05 03:07 UTC

README

68747470733a2f2f6769746875622d6164732e73332e65752d63656e7472616c2d312e616d617a6f6e6177732e636f6d2f737570706f72742d756b7261696e652e7376673f743d31

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

Lets you easily bind a mock to the service container that can flexibly record details every time it is used. Especially helpful for generating a list of specific actions and their parameters throughout a job, then using that to match a snapshot or ensure that a certain sequence of actions happened in the right order.

Installation

You can install the package via composer:

composer require knutle/pest-mock-recorder

Usage

# Automatically bind the mock to the service container while instantiating it
$mock = MockRecorder::bind(MyClass::class);

# Setup expectations for only recording
$mock->expect(
    write: fn (string $name) => $name
);

# Resolve your mock from the service container and watch the history fill up
app(MyClass::class)->write('Write 1'); // returns null
app(MyClass::class)->write('Write 2'); // returns null

# Both entries can now be found in the history variable
$mock->history == [
    'Write 1',
    'Write 2'
]

# You can also return an array to also return data from your mock
$mock->expect(
    write: fn (string $name) => [ $name, "Hello $name!" ]
);

app(MyClass::class)->write('Bob'); // returns "Hello Bob!"

# Still it records to history
$mock->history == [
    'Write 1',
    'Write 2',
    'Bob',
]

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.