Skip to content

peridot-php/peridot-prophecy-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Peridot Prophecy Plugin

Build Status HHVM Status

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/

About

Add prophecy to your peridot tests and auto inject mocks

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages