【问题标题】:Question about stubbing method composed with other methods关于与其他方法组合的存根方法的问题
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为, foo 并不像这里显示的那么简单。如果是这样,它就不会“对应用程序逻辑非常重要”。但是如果就这么简单,我会同意你的……
    【解决方案2】:

    如果您真的想彻底测试,我会编写两种自动测试:一种单元测试,它将接收 a、b、c 和 d 作为存根,以及一个集成测试,这将确保所有逻辑都能很好地协同工作并且没有集成问题。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 2010-12-20
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        相关资源
        最近更新 更多