fnmock / fnmock
There is no license information available for the latest version (0.1.1) of this package.
Mock PHP functions
0.1.1
2015-03-26 14:51 UTC
Requires (Dev)
- phpunit/phpunit: ~4.5
This package is auto-updated.
Last update: 2024-04-17 21:59:53 UTC
README
A PHP testing tool for mocking functions.
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.
Important: Mocking functions is only supported when the function caller is within a namespace.
Example
// 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; } }
// Test use FnMock\FnMock; $client = new Http\Client(); FnMock::mock('Http\curl_exec', function($ch) { $url = curl_getinfo($ch)['url']; assert($url === 'http://google.com'); return 'Fake response from server'; }); $response = $client->touch('http://google.com'); assert($response === 'Fake response from server'); // Important: Reset FnMock as part of your tearDown process FnMock::reset();
Install
composer require fnmock/fnmock
Integrate it with PHPUnit
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
use FnMock\PHPUnitTrait; class TestCase extends \PHPUnit_Framework_TestCase { use PHPUnitTrait; }
License
FnMock is licensed under the MIT License - see the LICENSE.txt
file for details
Author
Adam Nicholson - adamnicholson10@gmail.com