phpunit easymock
1.5.0
轻松构建 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 模拟,这里没有什么特别的。
请参阅贡献文件。
根据麻省理工学院许可发布。