1
   def foo
     a & b & c & d
   end

而且它对于应用程序逻辑非常重要,所以我必须为它编写好的测试。方法 a、b、c、d 已经过测试。我应该准备完整的数据以使 a、b、c、d 工作并返回请求的值,还是在这种情况下存根就足够了?

4

3 回答 3

1

如果你真的想彻底测试,我会编写两种自动测试:一种接收 a、b、c 和 d 作为存根的单元测试,以及一种确保所有逻辑一起工作的集成测试。没有集成问题。

于 2011-03-31T09:42:32.333 回答
1

我很欣赏您希望彻底测试的愿望,但是使用存根对此进行单元测试只会测试&操作员是否正常工作。该运算符不是您的代码。

如果您使用模拟而不是存根,它至少会测试是否调用了所有方法,但这实际上只是一种文档测试。

然而,使用数据的集成测试可能很有用。

于 2011-03-31T09:48:20.617 回答
1

单元测试应该只测试被测方法,即 foo。这意味着,您应该存根 a、b、c 和 d。
为了使它有任何用途,您应该确保涵盖所有可能由这些方法的返回值导致的极端情况。

于 2011-03-31T09:37:53.383 回答