No longer maintained
This package is no longer maintained. See [this statement] for more info., (*1)
[this statement]: https://gist.github.com/ezzatron/713a548735febe3d76f8ca831bc895c0# Phony for PHPUnit, (*2)
Phony for Peridot
![Current version image][version-image], (*3)
Installation
composer require --dev eloquent/phony-peridot
See also
What is Phony for Peridot?
Phony for Peridot is a plugin for the Peridot testing framework that
provides auto-wired test dependencies via the Phony mocking framework., (*4)
In other words, if a Peridot test (or suite) requires a mock object, it can be
defined to have a parameter with an appropriate type declaration, and it will
automatically receive a mock of that type as an argument when run., (*5)
Stubs for callable types, and "empty" values for other type declarations are
also supported., (*6)
Plugin installation
The plugin must be installed in the Peridot configuration file:, (*7)
use Eloquent\Phony\Peridot\PeridotPhony;
use Evenement\EventEmitterInterface;
return function (EventEmitterInterface $emitter) {
PeridotPhony::install($emitter);
};
Dependency injection
Once the plugin is installed, any tests or suites that are defined with
parameters will be supplied with matching arguments when run:, (*8)
describe('Phony for Peridot', function () {
it('Auto-wires test dependencies', function (PDO $db) {
expect($db)->to->be->an->instanceof('PDO');
});
});
Injected mock objects
Phony for Peridot supports automatic injection of mock objects. Because
Phony doesn't alter the interface of mocked objects, it is necessary to use
[on()] to retrieve the mock handle in order to perform stubbing and
verification:, (*9)
use function Eloquent\Phony\on;
describe('Phony for Peridot', function () {
it('Supports stubbing', function (PDO $db) {
on($db)->exec->with('DELETE FROM users')->returns(111);
expect($db->exec('DELETE FROM users'))->to->equal(111);
});
it('Supports verification', function (PDO $db) {
$db->exec('DROP TABLE users');
on($db)->exec->calledWith('DROP TABLE users');
});
});
Injected stubs
Phony for Peridot supports automatic injection of stubs for parameters with
a callable type declaration:, (*10)
describe('Phony for Peridot', function () {
it('Supports callable stubs', function (callable $stub) {
$stub->with('a', 'b')->returns('c');
$stub('a', 'b');
$stub->calledWith('a', 'b')->firstCall()->returned('c');
});
});
Supported types
The following table lists the supported type declarations, and the value
supplied for each:, (*11)
| Parameter type |
Supplied value |
| (none) |
null |
bool |
false |
int |
0 |
float |
.0 |
string |
'' |
array |
[] |
stdClass |
(object) [] |
callable |
[stub()] |
Closure |
function () {} |
Generator |
(function () {return; yield;})() |
When using a type declaration that is not listed above, the supplied value
will be a mock of the specified type., (*12)
By necessity, the supplied value will not be wrapped in a mock handle. In
order to obtain a handle, simply use [on()]:, (*13)
use function Eloquent\Phony\on;
it('Example mock handle retrieval', function (ClassA $mock) {
$handle = on($mock);
});
License
For the full copyright and license information, please view the LICENSE file., (*14)