Mocktation
PHP Mocking using annotations, (*1)
, (*2)
Mocktation lets you define return values of class methods when mocking, instead of having to define each return value in your tests., (*3)
By annotating using @mockReturn "test", the method will return "test"
by default when calling the method after creating a mock using $this->createMock(CLASSNAME) in your tests., (*4)
This speeds up development since you can define default mock return values when writing the method, instead of retroactively deciding on mock values., (*5)
-
Install Mocktation, (*6)
composer require-dev prodikl/mocktation
-
Extend Mocktation/Testcase instead of PHPUnit TestCases, (*7)
use Mocktation\TestCase;
class ExampleTest extends TestCase {
public function testGetNum(){
/** @var Example|MockObject $mock */
$mock = $this->createMock(Example::class);
$this->assertEquals(5, $mock->getNum(234));
}
}
-
Use annotations to describe mocking in your methods, (*8)
class Example {
/**
* Accepts an int $num and returns it
*
* @param $num int The num to return
* @return int The example num
*
* @mockReturn 5
*/
public function getNum($num){
return $num;
}
}
Here's a list of Mocktation annotations, (*9)
-
@mockReturn [returnValue] - Returns the [returnValue] when called
-
@mockReturnArgument [argumentNumber] - Returns the [argumentNumber] when called. [argumentNumber] starts from 0.