phpunit:an expected any()何时有用,为什么存在?
有时我看到一些人在写作phpunit:an expected any()何时有用,为什么存在?,phpunit,Phpunit,有时我看到一些人在写作 ->expects($this->any()) 在我看来,这完全是多余的。对我来说,这意味着“我不在乎这个期望”,我错了吗?我认为链式呼叫可能是一个很好的例子(以电话为例) 如果你想用传统的方式模拟它,你最终会为每个调用创建单独的模拟!只需模拟一行代码,它就可以轻松地增长到代码屏幕的一半!但是等等,有办法 $value = 'some mocked value'; $mock = $this->getMock('ServiceClass',
->expects($this->any())
在我看来,这完全是多余的。对我来说,这意味着“我不在乎这个期望”,我错了吗?我认为链式呼叫可能是一个很好的例子(以电话为例) 如果你想用传统的方式模拟它,你最终会为每个调用创建单独的模拟!只需模拟一行代码,它就可以轻松地增长到代码屏幕的一半!但是等等,有办法
$value = 'some mocked value';
$mock = $this->getMock('ServiceClass', array('getSomething',
'getSomethingElse','doMore','proceed','toGetTheFinalCall' ), array(), '', false);
$mock->expects($this->any())->method('toGetTheFinalCall')
->will($this->returnValue($value));
$mock->expects($this->any())->method($this->anything())
->will($this->returnValue($mock));
这样,对mock的每个连续调用都会返回自身,因此可以根据需要多次链接它。您不会检查方法是否按所需的顺序调用,但这不是真正的问题。最终,您需要的是测试对调用结果执行某些操作的代码。aaah,很好,很好。但是在这种情况下,我的猜测是您可以删除
->expected($this->any())
。他们看起来很奇怪你是对的。但它可能出于文档目的而存在:我们明确地说“可以根据需要多次调用”。显式比隐式好,对吗?:)当然,这是口味的问题。或者,当这种方法在循环中时
$value = 'some mocked value';
$mock = $this->getMock('ServiceClass', array('getSomething',
'getSomethingElse','doMore','proceed','toGetTheFinalCall' ), array(), '', false);
$mock->expects($this->any())->method('toGetTheFinalCall')
->will($this->returnValue($value));
$mock->expects($this->any())->method($this->anything())
->will($this->returnValue($mock));