Prophecy
, (*1)
Prophecy PhpUnit integrates the Prophecy mocking
library with PHPUnit to provide an easier mocking in your testsuite., (*2)
Installation
Prerequisites
Prophecy PhpUnit requires PHP 7.3 or greater.
Prophecy PhpUnit requires PHPUnit 9.1 or greater. Older versions of PHPUnit are providing the Prophecy integration themselves., (*3)
Setup through composer
composer require --dev phpspec/prophecy-phpunit
You can read more about Composer on its official webpage., (*4)
How to use it
The trait ProphecyTrait provides a method prophesize($classOrInterface = null) to use Prophecy.
For the usage of the Prophecy doubles, please refer to the Prophecy documentation., (*5)
Below is a usage example:, (*6)
<?php
namespace App;
use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait;
use App\Security\Hasher;
use App\Entity\User;
class UserTest extends TestCase
{
use ProphecyTrait;
public function testPasswordHashing()
{
$hasher = $this->prophesize(Hasher::class);
$user = new User($hasher->reveal());
$hasher->generateHash($user, 'qwerty')->willReturn('hashed_pass');
$user->setPassword('qwerty');
$this->assertEquals('hashed_pass', $user->getPassword());
}
}