Abstract (about)
This project provides class that can be used to proxy calls to regular
functions, therefore making them mockable like every other method call., (*1)
Install (include in composer)
"require": {
"mikolajprzybysz/php-native-wrapper": "^1.0.0"
}
How to use:
1.Add Native class as dependency to the class using native calls, (*2)
Via constructor, (*3)
class SampleClass {
/** @var Native */
protected $native;
public function __construct(Native $native){
$this->native = $native;
}
}
Via setter, (*4)
class SampleClass {
/** @var Native */
protected $native;
public function setNative(Native $native){
$this->native = $native;
}
}
2.Whenever you need to run native function, call it via $native instance:, (*5)
class SampleClass {
/** @var Native */
protected $native;
public function sampleMethod(){
return $native->time();
}
}
3.Mock it as any other class, (*6)
class SampleClassTest extends \PHPUnit_Framework_TestCase {
public function testSampleMethod(){
$sampleTime = 123;
$nativeMock = $this->getMock(Native::class);
$nativeMock->expects($this->once())->method('time')->will($this->returnValue($sampleTime));
$testObject = new SampleClass($nativeMock);
$result = $testObject->sampleMethod();
$this->assertEquals($sampleTime, $result);
}
}
Unit test
./vendor/bin/phpunit test/MockTest.php --bootstrap vendor/autoload.php
Acceptance test
./vendor/bin/phpunit test/MockTest.php --bootstrap vendor/autoload.php
What it does not support
- extract
- sort and any method using reference in it's arguments