我有一個PHPUnit的mock對象返回'return value'
不管它的參數:如何讓PHPUnit MockObjects根據參數返回不同的值?
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
我希望能夠做的是返回基於傳入模擬方法的參數不同的值。我已經試過類似:
$mock = $this->getMock('myObject', 'methodToMock');
// methodToMock('one')
$mock->expects($this->any))
->method('methodToMock')
->with($this->equalTo('one'))
->will($this->returnValue('method called with argument "one"'));
// methodToMock('two')
$mock->expects($this->any))
->method('methodToMock')
->with($this->equalTo('two'))
->will($this->returnValue('method called with argument "two"'));
但是,這會導致PHPUnit來抱怨,如果模擬不與參數'two'
叫,所以我假設的methodToMock('two')
定義覆蓋了第一個定義。
所以我的問題是:有什麼辦法讓PHPUnit模擬對象根據其參數返回不同的值?如果是這樣,怎麼樣?
您能否提供文檔鏈接?我似乎無法找到與「谷歌」 – 2010-03-10 18:43:03
http://www.phpunit.de/manual/3.6/en/test-doubles.html#test-doubles.stubs – Steve 2011-01-20 22:08:08
請注意,您可以使用一種方法作爲通過傳遞數組的回調,例如`$這 - > returnCallback(陣列( 'MyClassTest', 'myCallBack函數'))`。 – 2011-07-12 20:30:38