伊斯坦布尔与mocha,nodejs总是提供相同的覆盖范围

时间:2015-11-30 14:42:08

标签: node.js mocha istanbul

我已经设置了istanbul来检查节点中我的apis的代码覆盖率。如果我得到了整个想法,如果测试覆盖错误,我很困惑。我有一个目录结构  -app包含        -API        -controllers        -楷模  -测试     -api_test.js

运行istanbul cover _mocha运行api_test.js中的所有测试用例并返回覆盖范围为 声明:46.55%(27/58) 分店:0%(0/18) 功能:0%(0/13) 线:48.21%(27/56)

但后来我删除了一堆测试用例,重新运行伊斯坦布尔仍然覆盖的统计数据是一样的。 根据我对该工具的理解,它应该根据我的测试用例导致执行的所有代码行给出统计数据,这样在我运行较少数量的测试时,技术上应该减少测试覆盖率。 另外我的报告html只包含某些模型的覆盖统计数据(甚至不包括所有模型)所以这增加了我是否已正确配置测试套件和istanbul的混淆。任何帮助都会受到赞赏,因为我对节点很新。

2 个答案:

答案 0 :(得分:0)

istanbul用于源代码文件的代码覆盖。 mocha包含测试用例。您可以拥有一个占据源代码100%的测试用例,istanbul将报告100%。您可以添加更多测试用例(针对不同的路径,案例等),但istanbul会报告相同的情况,因为第一个测试用例是100%。

我认为您已正确设置了所有内容。在您的问题中,您只需运行测试即可达到某些级别的覆盖率,而测试又会加载源文件。如果有一个测试用例或100个,则在加载时仍会处理源文件。当你看到Branches : 0% ( 0/18 ) Functions : 0% ( 0/13 )这样的内容时,你知道你没有测试太多,但仍有一些线覆盖。

当您的测试用例运行更多测试源代码时,伊斯坦布尔将更改其结果。

答案 1 :(得分:-1)

@clay谢谢,这有帮助。所以我现在想到的是,在我的情况下,我有mocha测试,只需调用api端点并获得结果。因此,在运行测试用例时几乎不会加载任何源文件,因此代码覆盖率实际上永远不会改变。我通过在我的测试用例之上包含我需要覆盖的文件来解决这个问题。这只是一个虚拟需求,仅用于加载我的源文件以进行覆盖。我可以要求文件或文件夹,并且将监视所有这些源文件,并在执行时添加到报告中。 我希望这对那些面临类似混淆的人有所帮助。