Function Mocker stop wrapping things 01
December 22, 2014
Working to add a functional way to configure Function Mocker.
A duct tape solution
In a rush to fix it I came up with a quick and dirty solution to make function-mocker and Codeception play together.
That's a duct-tape solution to the problem of which files and at which time Function Mocker is wrapping.
Init and setUp
The FunctionMocker::setUp method is meant to be used in a PHPUnit test case setUp method and not in the bootstrap file; my idea is to store any operation or data contextual to a single test case in that method and nothing else.
I've added a method to the class, FunctionMocker::init that's meant to be used in the test suite bootstrap file (be it a Codeception or a PHPUnit test suite); the below example refers to a Codeception _bootstrap.php file
// This is global bootstrap for autoloading
use tad\FunctionMocker\FunctionMocker;
require_once dirname( __FILE__ ) . '/../vendor/autoload.php';
FunctionMocker::init();
and in the test case nothing changes
use tad\FunctionMocker\FunctionMocker;
class SomeClassTest extends \PHPUnit_Framework_TestCase
{
protected function setUp() {
FunctionMocker::setUp();
}
protected function tearDown() {
FunctionMocker::tearDown();
}
/**
* @test
* it should...
What should not be wrapped
The actual solution will exclude some common paths from the patchwork pre-processing like:
/vendor/codecept- Codeception folder/vendor/phpunit- PHPUnit folder/vendor/sebastian- PHPunit creator Sebastian Bergmann packages foldervendor/phpspec- phpspec foldervendor/bin- the CLI files folder
I'm working to implement a solution that will allow me to set up this blacklist in a flexible and optionable manner.
Next
I have had some issues with code coverage and am willing to investigate the matter while trying to understand patchwork inner workings.