phpunit:什么时候有用,期望any()?,为什么存在?

时间:2017-09-05 11:27:20

标签: phpunit

有时候我会看到有些人写作

->expects($this->any())

对我来说完全是多余的。对我来说意味着“我不关心这种期望”,我错了吗?

1 个答案:

答案 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都会自行返回,因此可以根据需要链接多次。您不会检查方法是否按所需顺序调用,但这不是一个真正的问题。最终你想要的是测试与调用结果有关的代码。