2

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

在此处输入图像描述

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

单击第一行,我可以详细检查我测试过的代码。突出显示“未包含在测试中”的行:

在此处输入图像描述

问题一

我怎样才能

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

对于必须在何处/何时执行代码以成为成功覆盖的一部分,是否有一些限制?我在我的 it 方法中调用代表。在构建被测模块期间是否已经需要调用它们?

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

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

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

测试成功执行,对我来说很好。但是,覆盖结果并不像预期的那样。

问题乙

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

4

1 回答 1

0

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

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

问题B 我也想弄清楚。

于 2016-05-19T21:49:07.123 回答