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 模擬,這裡沒有什麼特別的。
請參閱貢獻文件。
根據麻省理工學院許可發布。