【发布时间】:2016-02-22 18:01:04
【问题描述】:
我可以以某种方式更新特定 shouldReceive 的 shouldReturn 值吗?
例如,我有几个测试使用一个返回值,只有一个使用其他返回值。
所以我把它放在了setUp中:
$this->someDependency->shouldReceive('someMethod')->andReturn(0);
如果我把它放在那个特定的测试用例中:
$this->someDependency->shouldReceive('someMethod')->andReturn(1);
会被忽略,返回0。
我将这种移动模拟“修复”到所有测试并从 setUp 中删除。但我不喜欢代码重复。
【问题讨论】:
-
哪个是判断什么时候返回1而不是0的判别器?方法参数数据是否可能?如果是,请检查
with()方法 -
其实我在调用这个方法时不带参数。这个依赖是学说存储库和这个计数方法,这就是为什么我可以有多个值而不管参数。
-
您是否尝试过使用
andReturn(value1, value2, ...)中的Mockery docs 方法? -
这样我的单元测试将真正相互依赖。
-
也许如果不是将返回值硬编码为“0”和“1”,您可以为返回值设置一个全局变量,该变量在设置方法中设置一次,然后在测试用例中更新应该有不同的返回值?