No description, website, or topics provided.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.idea Added prophecy revelation Nov 17, 2017
src Fix extension under PHPStan 0.10 Jun 25, 2018
tests Fix: Case Jun 23, 2018
.editorconfig Enhancement: Run tests against lowest, locked, and highest dependencies Jul 10, 2018
.gitattributes Add .gitattributes to reduce payload when distributed Nov 30, 2017
.travis.yml Update composer.lock properly Jul 11, 2018
LICENSE Create LICENSE Jul 6, 2018
composer.json Enhancement: Keep packages sorted in composer.json Sep 27, 2018
composer.lock Enhancement: Keep packages sorted in composer.json Sep 27, 2018
phpstan.neon Added travis test running Nov 20, 2017
phpunit.xml Merge branch 'master' into fix/bootstrap Jul 3, 2018 Fix: Typo Jun 23, 2018



PHPStan is a static code analysis tool for php, you can find out more about it here.

This repository provides an extension so that it also understands code that uses the Prophecy library to fake objects in unit tests. So far it covers two use cases:

Prophesizing and Revealing

$prophecy = $prophet->prophesize(SomeModel::class);
$instance = $prophecy->reveal();

It will help PHPStan to understand that the $instance variable is indeed an instance of SomeClass.

Method Predictions

$prophecy = $prophet->prophesize(Calculator::class);

$instance = $prophecy->reveal();
$instance->doubleTheNumber(2); // Will return 5

It will also help PHPStan to understand that $prophecy accepts method calls to all methods that are implemented by its prophesized class.

HINT: Currently there are no checks in place to validate the arguments of methods that are being called on prophecies.

Installation and usage

Install via composer (no release available yet):

composer require --dev jangregor/phpstan-prophecy

And then make sure to add the extension to your phpstan.neon file:

	- vendor/jangregor/phpstan-prophecy/src/extension.neon

And you should be good to go. Happy testing!