【问题标题】:While unit testing I frequently require to test internal (private) logic, what is the best practice for this?虽然单元测试我经常需要测试内部(私有)逻辑,但最好的做法是什么?
【发布时间】:2012-03-25 19:32:33
【问题描述】:

我相信每个人都会遇到需要测试类/对象的内部连接的情况。我知道在编译语言中,这可以通过条件编译来完成。这也是我应该为 JavaScript 做的吗?完成此类任务的通常方法是什么?也许我应该将类/对象视为黑盒,只测试它的结果?

【问题讨论】:

    标签: javascript unit-testing private qunit


    【解决方案1】:

    测试对象的公共合约(即您提到的黑盒测试)大部分时间应该足够了。公共成员的适当测试覆盖率也应该行使大多数私人/内部人员。毕竟,为什么您的类的用户(无论是其他程序员、其他对象/合作者)会关心您的对象在内部做什么

    当您感到强烈需要测试内部结构时,请将其视为改进的机会。通常,这种需求是你的code communicating你的结果 - “也许我不应该是私人的”“也许值得将我重构为独立的存在” .

    另外,请记住,内部测试会使您的测试更加脆弱。虽然您的对象/类功能(合同)可能保持不变,但实现可能会经常更改。考虑用 3rd 方/外部库替换您自己的代码(相当常见的更改)——这是破坏您的测试的理由吗?不是。

    我意识到有时您只需要测试内部结构 - 但 IMO,最好停下来想想您是否可以让您的代码变得更好(很多时候您会发现您确实可以!)。当其他一切都失败时,将测试内部作为最后的手段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 2021-11-16
      • 2020-04-12
      相关资源
      最近更新 更多