有时候我会看到有些人写作
->expects($this->any())
对我来说完全是多余的。对我来说意味着“我不关心这种期望”,我错了吗?
答案 0 :(得分:1)
我认为链接调用可能有一个很好的例子(采用from here)
$this->someService
->getSomething()
->getSomethingElse()
->doMore($x)
->proceed()
->toGetTheFinalCall($y);
如果你想以传统的方式嘲笑它,你最终会为每一个电话创建单独的模拟!这将轻松增长到代码屏幕的一半只是为了模拟一行!但等等有办法!
$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都会自行返回,因此可以根据需要链接多次。您不会检查方法是否按所需顺序调用,但这不是一个真正的问题。最终你想要的是测试与调用结果有关的代码。