knutle/pest-mock-recorder

Lets you easily bind a mock to the service container that can flexibly record history every time it is used
93
Install
composer require knutle/pest-mock-recorder
Latest Version:v0.1.2
PHP:^8.0
License:MIT
Last Updated:Oct 9, 2023
Links: GitHub  ·  Packagist
Maintainer: knutle

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.

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

634,760,849 9,707
laravel/framework

The Laravel Framework.

584,532,650 34,931
laravel/tinker

Powerful REPL for the Laravel framework.

493,838,477 7,443
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

408,553,772 609
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

391,429,217 4,660