【发布时间】:2011-07-26 17:53:46
【问题描述】:
def foo
a & b & c & d
end
而且它对应用程序逻辑非常重要,所以我必须为它写好测试。方法 a、b、c、d 已经过测试。我应该准备完整的数据以使 a、b、c、d 工作并返回请求的值,还是在这种情况下存根就足够了?
【问题讨论】:
标签: unit-testing testing mocking stubbing
def foo
a & b & c & d
end
而且它对应用程序逻辑非常重要,所以我必须为它写好测试。方法 a、b、c、d 已经过测试。我应该准备完整的数据以使 a、b、c、d 工作并返回请求的值,还是在这种情况下存根就足够了?
【问题讨论】:
标签: unit-testing testing mocking stubbing
感谢您希望彻底测试,但是使用存根对此进行单元测试只会测试 & 运算符是否正常工作。该运算符不是您的代码。
如果您使用模拟而不是存根,它至少会测试是否调用了所有方法,但这实际上只是一种文档测试。
然而,使用数据的集成测试可能很有用。
【讨论】:
如果您真的想彻底测试,我会编写两种自动测试:一种单元测试,它将接收 a、b、c 和 d 作为存根,以及一个集成测试,这将确保所有逻辑都能很好地协同工作并且没有集成问题。
【讨论】:
单元测试应该只测试被测方法,即 foo。这意味着,您应该存根 a、b、c 和 d。
为了让它发挥作用,您应该确保涵盖所有可能由这些方法的返回值导致的极端情况。
【讨论】: