Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 虽然我经常要求单元测试来测试内部(私有)逻辑,但这方面的最佳实践是什么?_Javascript_Unit Testing_Private_Qunit - Fatal编程技术网

Javascript 虽然我经常要求单元测试来测试内部(私有)逻辑,但这方面的最佳实践是什么?

Javascript 虽然我经常要求单元测试来测试内部(私有)逻辑,但这方面的最佳实践是什么?,javascript,unit-testing,private,qunit,Javascript,Unit Testing,Private,Qunit,我相信每个人都会遇到这样的情况:需要测试类/对象的内部连接。我知道在编译语言中,这可以通过条件编译来完成。这也是我应该为JavaScript做的吗?完成这项任务的通常方法是什么?也许我应该把类/对象当作一个黑箱,只测试它的结果?测试对象的公共契约(即您提到的黑箱测试)大多数时候应该足够了。公共成员的适当测试覆盖范围也应适用于大多数私人/内部成员。毕竟,为什么您的类的用户(无论是其他程序员、其他对象/协作者)会关心您的对象在其中做什么 当您感到非常需要测试内部构件时,请将其视为改进的机会。通常,这

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

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

当您感到非常需要测试内部构件时,请将其视为改进的机会。通常,这种需要是你的某种东西的结果——“也许我不应该是私人的”,“也许把我重构成独立的存在是值得的”

另外,请记住,测试内部组件会使测试变得更脆弱。虽然对象/类功能(契约)可能保持不变,但实现可能会经常更改。考虑用第三方/外部库替换您自己的代码片段(非常常见的更改)-这是破坏测试的原因吗?事实并非如此

我意识到有时候你只需要测试内部构件——但在我看来,最好停下来想想你是否可以让代码变得更好(通常你会发现你确实可以!)。当其他一切都失败时,将测试内部构件视为最后手段