更新嘲讽和返回

时间:2015-11-20 09:43:49

标签: php phpunit mockery

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

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

所以我把它放在setUp中:

$this->someDependency->shouldReceive('someMethod')->andReturn(0);

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

$this->someDependency->shouldReceive('someMethod')->andReturn(1);

它将被忽略,并返回0。

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

1 个答案:

答案 0 :(得分:2)

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

也可以在该帮助程序中,具有从特定模拟返回的给定值的函数参数。

有些人认为每个测试应该完全相互独立,除了一些非常常见的设置,并且应该在其自身内部完成所有事情。这确实使得它明确表示发生了什么(非常清楚,明显发生了什么) - 但代价重复的潜在代价。如果您不想重复太多,那么这是您的选择。