Aides pour créer facilement des objets simulés PHPUnit.
Cette bibliothèque n'est pas une bibliothèque moqueuse. Ce ne sont que quelques aides pour rédiger plus facilement les mocks les plus courants.
Il ne réinvente rien et n’a pas vocation à couvrir tous les cas d’usage : uniquement les plus courants.
$ composer require --dev mnapoli/phpunit-easymock
Pour pouvoir utiliser EasyMock dans vos tests vous devez inclure le trait dans votre classe :
class MyTest extends PHPUnit Framework TestCase
{
use EasyMock EasyMock;
/ / ...
}
Voici à quoi ressemble une simulation PHPUnit très courante :
$ mock = $ this -> createMock ( ' MyClass ' );
$ mock -> expect ( $ this -> any ())
-> method ( ' sayHello ' )
-> willReturn ( ' Hello ' );
Beurk !
Voici comment l'écrire avec EasyMock :
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Que faire si vous souhaitez affirmer que la méthode est appelée une fois (c'est-à-dire $mock->expect($this->once())
) ? Utilisez plutôt spy()
:
$ mock = $ this -> easySpy ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Vous pouvez simuler des méthodes pour qu'elles renvoient des valeurs :
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Ou pour qu'ils utilisent un rappel :
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => function ( $ name ) {
return ' Hello ' . $ name ;
},
]);
Vous pouvez également demander aux méthodes de lever des exceptions en fournissant une instance Exception
:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => new RuntimeException ( ' Whoops ' ),
]);
Il est possible de rappeler la méthode mock()
sur un mock existant :
$ mock = $ this -> easyMock ( ' MyClass ' );
$ mock = $ this -> easyMock ( $ mock , [
' sayHello ' => ' Hello ' ,
]);
Si vous souhaitez utiliser des assertions ou d'autres fonctionnalités de PHPUnit, faites-le :
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' hello ' ,
]);
$ mock -> expects ( $ this -> once ())
-> method ( ' sayGoodbye ' )
-> willReturn ( ' Goodbye ' );
Les simulations sont de simples simulations PHPUnit, rien de spécial ici.
Voir le dossier CONTRIBUANT.
Publié sous licence MIT.