更新嘲讽和返回

Iva*_*cev 5 php phpunit mockery

我可以以某种方式更新特定的shouldReceive的shouldReturn值吗?

例如,我有几个测试使用一个返回值,只有一个使用一些其他返回值.

所以我把它放在setUp中:

$this->someDependency->shouldReceive('someMethod')->andReturn(0);
Run Code Online (Sandbox Code Playgroud)

如果我把它放在特定的测试用例中:

$this->someDependency->shouldReceive('someMethod')->andReturn(1);
Run Code Online (Sandbox Code Playgroud)

它将被忽略,并返回0.

我将这种移动模拟"修复"到所有测试并从setUp中删除.但我不喜欢那个代码重复.

Ali*_*man 2

这主要是风格问题。您可以在测试调用的辅助函数中轻松创建一组“默认”模拟,然后创建一个更明确的替代版本来以不同的方式设置它们。

您还可以在该帮助程序中为给定值提供一个函数参数,以从特定模拟返回。

有些人认为,除了一些非常常见的设置之外,每个测试都应该完全相互独立,并且应该在其内部完成所有事情。这确实使正在发生的事情变得明确(非常清楚、明显正在发生的事情) - 但可能会导致代码重复。然而,如果您不想重复太多,那是您的选择。