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.