phpunit:什么时候有用预计任何()?,为什么存在?
问题描述:
答
我觉得有可能是链式调用(取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));
这种方式每次连续调用模拟模块都会返回自身,因此可以根据需要连接多次。你不会检查方法是否按照所需顺序调用,但这不是一个真正的问题。最终你想要的是测试那些对调用结果做些什么的代码。
aaaah,很好,那很好。但在这种情况下,我的猜测是你可以删除''' - >期望($ this-> any())'''。他们只是看起来很奇怪 –
你说得对。但它可能出于文档目的:我们明确地说“可以根据需要多次调用”。显式比隐式更好,对吗? :)但当然它的味道的问题。 –
是的,我也喜欢你的观点。非常感谢:) –