peridot-php / peridot-prophecy-plugin
Inject prophecy mocks into your Peridot tests
Installs: 96 347
Dependents: 14
Suggesters: 1
Security: 0
Stars: 4
Watchers: 4
Forks: 5
Open Issues: 1
Requires
- peridot-php/peridot: ~1.0
- phpspec/prophecy: ~1.0
This package is not auto-updated.
Last update: 2024-11-05 03:47:46 UTC
README
Use Peridot with the amazing mocking framework Prophecy
##Usage
We recommend installing this plugin to your project via composer:
$ composer require --dev peridot-php/peridot-prophecy-plugin:~1.0
You can register the plugin via your peridot.php file.
<?php use Evenement\EventEmitterInterface; use Peridot\Plugin\Prophecy\ProphecyPlugin; return function(EventEmitterInterface $emitter) { $plugin = new ProphecyPlugin($emitter); };
Registering this plugin will add a ProphecyScope
as a child scope to all of your tests. This will allow you
to get a prophet object in all of your tests.
<?php describe('Bird', function() { it('should fly', function() { $mock = $this->getProphet()->prophesize('Bird'); //do stuff with the mock }); });
###Automatic injection of mock
If a test suite's description is an existing class, the prophecy plugin will automatically inject a $subject
instance
variable into your tests that is a mock of the class.
describe('Vendor\Namespace\Klass', function() { it('should have a subject', function() { $instance = $this->subject->reveal(); assert($instance instanceof Klass, 'should be instance of Klass'); }); });
###Using the scope on a test by test basis
Like any other peridot scope, you can mix the ProphecyScope
provided by this plugin
on a test by test, or suite by suite basis.
<?php use Peridot\Plugin\Prophecy\ProphecyScope; describe('Bird', function() { //here we manually mixin the http kernel scope $scope = new ProphecyScope(); $this->peridotAddChildScope($scope); it('should fly', function() { $mock = $this->getProphet()->prophesize('Bird'); //do stuff with the mock }); });
##Example specs
To test examples that are using the plugin, run the following:
$ vendor/bin/peridot example/bird.spec.php
##Running plugin tests
$ vendor/bin/peridot specs/