伊斯坦布尔与摩卡,nodejs总是给出相同的覆盖面

我已经安装了istanbul来检查节点中的apis的代码覆盖率。 如果testing覆盖率不正确,我会觉得很困惑。 我有一个目录结构为-app包含-api -controllers -models -test -api_test.js

运行istanbul cover _mocha运行istanbul cover _mocha所有testing用例,并将覆盖范围返回为语句:46.55%(27/58)分支:0%(0/18)函数:0%(0/13)行:48.21%( 27/56)

但是后来我删除了一堆testing用例,重新运行伊斯坦布尔仍然覆盖stantics是一样的。 根据我对这个工具的理解,我应该根据我的testing用例的所有代码行数来给我统计,因为在我运行较less的testing时,技术上应该降低testing覆盖率。 此外,我的报告的HTML只包含一些模型(甚至不是所有的)的覆盖率统计所以这增加了困惑是否我configuration了testing套件和伊斯坦布尔是否正确。 任何帮助将不胜感激,因为我是相当新的节点。

istanbul是代码覆盖的源代码文件。 mocha掌握testing案例。 你可以有一个testing用例占到你的源代码的100%,伊斯坦布尔会报告100%。 您可以添加更多的testing用例(针对不同的path,案例等),但伊斯坦布尔会报告相同的情况,因为第一个testing用例为100%。

我想你已经正确设置了一切。 在你的问题中,你只需运行你的testing,然后加载你的源文件,达到了一定的覆盖水平。 有一个testing用例或100个,源文件在加载时仍然被处理。 当你看到像这样的事情时,你知道你没有太多testingBranches : 0% ( 0/18 ) Functions : 0% ( 0/13 ) ,但仍然有一些线路覆盖。

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

@粘土谢谢,这有助于。 所以我现在想到的是,在我的情况下,我有摩卡testing,只是调用api的终点,并得到结果。 所以在运行testing用例时几乎没有加载源文件,因此代码覆盖率几乎不会改变。 我通过在我的testing用例的顶部包含需要覆盖的文件来解决这个问题。 这只是一个虚拟的需求,只用来加载我的源文件覆盖。 我可以要求文件或文件夹,所有这些源文件将被监视,执行时将被添加到报告。 我希望这对面临类似混乱的其他人有帮助。