【发布时间】:2012-03-25 19:32:33
【问题描述】:
我相信每个人都会遇到需要测试类/对象的内部连接的情况。我知道在编译语言中,这可以通过条件编译来完成。这也是我应该为 JavaScript 做的吗?完成此类任务的通常方法是什么?也许我应该将类/对象视为黑盒,只测试它的结果?
【问题讨论】:
标签: javascript unit-testing private qunit
我相信每个人都会遇到需要测试类/对象的内部连接的情况。我知道在编译语言中,这可以通过条件编译来完成。这也是我应该为 JavaScript 做的吗?完成此类任务的通常方法是什么?也许我应该将类/对象视为黑盒,只测试它的结果?
【问题讨论】:
标签: javascript unit-testing private qunit
测试对象的公共合约(即您提到的黑盒测试)大部分时间应该足够了。公共成员的适当测试覆盖率也应该行使大多数私人/内部人员。毕竟,为什么您的类的用户(无论是其他程序员、其他对象/合作者)会关心您的对象在内部做什么?
当您感到强烈需要测试内部结构时,请将其视为改进的机会。通常,这种需求是你的code communicating你的结果 - “也许我不应该是私人的”,“也许值得将我重构为独立的存在” .
另外,请记住,内部测试会使您的测试更加脆弱。虽然您的对象/类功能(合同)可能保持不变,但实现可能会经常更改。考虑用 3rd 方/外部库替换您自己的代码(相当常见的更改)——这是破坏您的测试的理由吗?不是。
我意识到有时您只需要测试内部结构 - 但 IMO,最好停下来想想您是否可以让您的代码变得更好(很多时候您会发现您确实可以!)。当其他一切都失败时,将测试内部作为最后的手段。
【讨论】: