Ajudantes para construir objetos simulados do PHPUnit facilmente.
Esta biblioteca não é uma biblioteca simulada. São apenas alguns ajudantes para escrever os mocks mais comuns com mais facilidade.
Não reinventa nada e não se destina a cobrir todos os casos de uso: apenas os mais comuns.
$ composer require --dev mnapoli/phpunit-easymock
Para poder usar EasyMock em seus testes você deve incluir o trait em sua classe :
class MyTest extends PHPUnit Framework TestCase
{
use EasyMock EasyMock;
/ / ...
}
Aqui está a aparência de uma simulação PHPUnit muito comum:
$ mock = $ this -> createMock ( ' MyClass ' );
$ mock -> expect ( $ this -> any ())
-> method ( ' sayHello ' )
-> willReturn ( ' Hello ' );
Eca!
Aqui está como escrever com EasyMock:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
E se você quiser afirmar que o método é chamado uma vez (ou seja $mock->expect($this->once())
)? Use spy()
em vez disso:
$ mock = $ this -> easySpy ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Você pode simular métodos para que eles retornem valores:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Ou para que eles usem um retorno de chamada:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => function ( $ name ) {
return ' Hello ' . $ name ;
},
]);
Você também pode fazer com que os métodos gerem exceções fornecendo uma instância Exception
:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => new RuntimeException ( ' Whoops ' ),
]);
É possível chamar o método mock()
novamente em um mock existente:
$ mock = $ this -> easyMock ( ' MyClass ' );
$ mock = $ this -> easyMock ( $ mock , [
' sayHello ' => ' Hello ' ,
]);
Se você quiser usar asserções ou outros recursos do PHPUnit, basta fazê-lo:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' hello ' ,
]);
$ mock -> expects ( $ this -> once ())
-> method ( ' sayGoodbye ' )
-> willReturn ( ' Goodbye ' );
Simulações são simulações simples do PHPUnit, nada de especial aqui.
Veja o arquivo CONTRIBUINDO.
Lançado sob a licença do MIT.