Provides a phpspec/prophecy
extension for phpstan/phpstan
.
Run
composer require --dev jangregor/phpstan-prophecy
When using phpstan/extension-installer
, no further setup is required.
When not using phpstan/extension-installer
, extension.neon
needs to be included in phpstan.neon
:
includes:
+ - vendor/jangregor/phpstan-prophecy/extension.neon
<?php
use PHPUnit\Framework;
final class ExampleTest extends Framework\TestCase
{
public function testSomething(): void
{
$prophecy = $this->prophesize(SomeModel::class);
$testDouble = $prophecy->reveal();
// ...
}
}
đź’ˇ With this extension enabled, phpstan/phpstan
will understand that $testDouble
is an instance of SomeModel
.
<?php
use PHPUnit\Framework;
final class ExampleTest extends Framework\TestCase
{
public function testSomething(): void
{
$prophecy = $this->prophesize()->willExtend(SomeModel::class);
$testDouble = $prophecy->reveal();
// ...
}
}
đź’ˇ With this extension enabled, phpstan/phpstan
will understand that $testDouble
is an instance of SomeModel
.
<?php
use PHPUnit\Framework;
final class ExampleTest extends Framework\TestCase
{
public function testSomething(): void
{
$prophecy = $this->prophesize(SomeModel::class)->willImplement(SomeInterface::class);
$testDouble = $prophecy->reveal();
// ...
}
}
đź’ˇ With this extension enabled, phpstan/phpstan
will understand that $testDouble
is an instance of SomeModel
that also implements SomeInterface
.
<?php
use PHPUnit\Framework;
final class ExampleTest extends Framework\TestCase
{
public function testSomething(): void
{
$prophecy = $this->prophesize(SomeModel::class);
$prophecy
->doubleTheNumber(Argument::is(2))
->willReturn(4);
$testDouble = $prophecy->reveal();
// ...
}
}
đź’ˇ With this extension enabled, phpstan/phpstan
will understand that $prophecy
accepts method calls to all methods that are implemented by its prophesized class (or additionally implemented interfaces, when using willImplement()
).
âť— Currently here are no checks in place to validate the arguments of methods that are invoked on prophecies.
A development environment is provided via .docker/Dockerfile
.
Run
$ docker build --tag phpstan-prophecy .docker/
to build and tag the Docker image.
Run
$ docker run -it --rm --volume "$PWD":/var/www/html --workdir /var/www/html phpstan-prophecy bash
to open a shell in the Docker container.
Please have a look at CHANGELOG.md
.
Please have a look at CONTRIBUTING.md
.
This package is licensed using the MIT License.
Please have a look at LICENSE.md
.