Помощники для легкого создания макетов объектов PHPUnit.
Эта библиотека не является насмешливой библиотекой. Это всего лишь несколько помощников, которые облегчат написание наиболее распространенных макетов.
Он ничего не изобретает заново и не предназначен для охвата всех вариантов использования: только самые распространенные.
$ composer require --dev mnapoli/phpunit-easymock
Чтобы иметь возможность использовать EasyMock в своих тестах , вы должны включить этот признак в свой класс :
class MyTest extends PHPUnit Framework TestCase
{
use EasyMock EasyMock;
/ / ...
}
Вот как выглядит очень распространенный макет PHPUnit:
$ mock = $ this -> createMock ( ' MyClass ' );
$ mock -> expect ( $ this -> any ())
-> method ( ' sayHello ' )
-> willReturn ( ' Hello ' );
Фу!
Вот как это написать с помощью EasyMock:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Что, если вы хотите утверждать, что метод вызывается один раз (т.е. $mock->expect($this->once())
)? Вместо этого используйте spy()
:
$ mock = $ this -> easySpy ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Вы можете имитировать методы, чтобы они возвращали значения:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' Hello ' ,
]);
Или чтобы они использовали обратный вызов:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => function ( $ name ) {
return ' Hello ' . $ name ;
},
]);
Вы также можете заставить методы генерировать исключения, предоставив экземпляр Exception
:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => new RuntimeException ( ' Whoops ' ),
]);
Можно снова вызвать метод mock()
для существующего макета:
$ mock = $ this -> easyMock ( ' MyClass ' );
$ mock = $ this -> easyMock ( $ mock , [
' sayHello ' => ' Hello ' ,
]);
Если вы хотите использовать утверждения или другие функции PHPUnit, просто сделайте это:
$ mock = $ this -> easyMock ( ' MyClass ' , [
' sayHello ' => ' hello ' ,
]);
$ mock -> expects ( $ this -> once ())
-> method ( ' sayGoodbye ' )
-> willReturn ( ' Goodbye ' );
Моки — это обычные макеты PHPUnit, здесь нет ничего особенного.
См. файл CONTRIBUTING.
Выпущено по лицензии MIT.