我有一个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