Chutzpah覆盖率小于100%(由于私人方法?)

时间:2016-05-18 11:47:24

标签: javascript jasmine chutzpah test-coverage blanket.js

我使用Chutzpah测试我的JavaScript测试覆盖率。以下是运行单个测试文件时的覆盖结果示例 referenceFigureEdit.spec.js

enter image description here

我预计覆盖率为100%,但仅为91.07%。

点击第一行,我可以详细检查我的测试代码。突出显示“未被测试覆盖”的行:

enter image description here

问题A

我怎么能

  • 告诉Chutzpah这些方法实际上已经执行或
  • 告诉Chutzpah不在报道结果中包含这些行?

对于成功覆盖的代码必须执行的位置/时间是否有一些限制?我在我的it-methods中调用了代理。在构建被测模块时是否需要调用它们?

我测试的代码定义了一些传递给构造函数的委托方法(例如“showErrors”)(例如new saveCommand(...,showErrors))。该委托的方法声明突出显示,不包含在coverage中。但是,这些代表实际上是在测试期间执行的,我希望覆盖范围是100%。

即使showErrors委托中的代码是私有的,我也想测试它(是否应该测试私有方法不是我的问题)。为了在我的测试中执行委托,我模拟了saveCommand。模拟的saveCommand发布传递的委托,在测试中我明确地调用它:

sut.saveCommand.__showErrors();
expect(showAllMessagesSpy).toHaveBeenCalled();

测试成功执行,对我来说没问题。但是,覆盖率结果与预期不符。

问题B

引用文件errorhandler.js的主要覆盖率结果显示覆盖率为27.59%。我还没有对errorhandler.js进行测试。这个数字是否表示在执行我的主文件referenceFigureEdit.js时执行了errorhandler.js的现有29个语句中的8个?我的主文件直接引用errorhandler.js但不直接引用utils.js。我在哪里可以找到关于如何正确解释这些“子数字”的文档,以及总计47.66%的目的是什么?

1 个答案:

答案 0 :(得分:0)

我可以回答问题A:您可以使用chutzpah.json文件指定排除项: " CodeCoverageExcludes":[" path1"," path2"," path3"," etc"]就我而言知道,你只能排除文件,而不是特定的行。

更新:是的,blanket.js是默认的代码覆盖率工具,它只在文件级别排除。

问题B我也想弄清楚。