betterphp/php-native-mock

PHP Native Mock is a helper class that allows for easy mocking of native PHP functions and class methods in unit tests using the UOPZ extension.

1.1.0 2017-08-02 10:23 UTC

This package is not auto-updated.

Last update: 2024-04-23 22:41:33 UTC


README

Helper class to mock or redefine native PHP functions in unit tests. Works using the UOPZ module, developed and tested against the master branch.

Build Status

This is largely a wrapper around the uopz functions with some extra bits thrown in to make it a bit easier in tests. It basically relies on dark magic and, like all magic, should only be used very carefully. Creating weird behaviour in applications is very easy, for example

$this->redefineFunction('substr', function () {
    return 'Doge';
});

would have some very strange effects.

Most of the time when redefining a function sounds like a good idea - it's probably not, make sure there is no way a "normal" mocking approach won't work first.

Installation

The library can be included via composer

{
    "require-dev": {
        "betterphp/php-native-mock": "~1"
    }
}

Documentation

Jenkins publishes a phpdoc here

Testing

We use phpcs and phpunit for testing, run both before commiting anything

./vendor/bin/phpcs -p --standard=./ruleset.xml .
./vendor/bin/phpunit -c ./phpunit.xml

phpunit will do code coverage checking which requires xdebug, if it's not installed this will fail gracefully - not to worry.

A report of the test coverage is published here by Jenkins