dev-master
9999999-devMock PHP functions
The Development Requires
by Adam Nicholson
0.1.1
0.1.1.0Mock PHP functions
The Development Requires
by Adam Nicholson
Wallogit.com
2017 © Pedro Peláez
Mock PHP functions
A PHP testing tool for mocking functions., (*1)
Most mocking frameworks only allow mocking of objects. FnMock is a tiny class that makes it easy to test functions outside the context of a class., (*2)
Important: Mocking functions is only supported when the function caller is within a namespace., (*3)
// Code
namespace Http;
class Client {
public function touch($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
}
```php // Test use FnMock\FnMock;, (*4)
$client = new Http\Client();, (*5)
FnMock::mock('Http\curl_exec', function($ch) { $url = curl_getinfo($ch)['url']; assert($url === 'http://google.com'); return 'Fake response from server'; });, (*6)
$response = $client->touch('http://google.com'); assert($response === 'Fake response from server');, (*7)
// Important: Reset FnMock as part of your tearDown process FnMock::reset();, (*8)
## Install
composer require fnmock/fnmock, (*9)
## Integrate it with PHPUnit ```php use FnMock\FnMock; class TestCase extends \PHPUnit_Framework_TestCase { protected function mockFunction($fn, callable $callback) { FnMock::mock($fn, $callback); } public function tearDown() { FnMock::reset(); parent::tearDown(); } }
Or just use the trait we provide, (*10)
use FnMock\PHPUnitTrait;
class TestCase extends \PHPUnit_Framework_TestCase
{
use PHPUnitTrait;
}
FnMock is licensed under the MIT License - see the LICENSE.txt file for details, (*11)
Adam Nicholson - adamnicholson10@gmail.com, (*12)
Mock PHP functions
Mock PHP functions