Helper class to mock or redefine native PHP functions in unit tests. Works using the UOPZ module, developed and tested against the master branch.
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.
The library can be included via composer
{
"require-dev": {
"betterphp/php-native-mock": "~1"
}
}
Jenkins publishes a phpdoc here
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