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

我预计覆盖率是100%,但只有91.07%。
单击第一行,我可以详细检查我的测试代码。突出显示“测试未涵盖”的行:

问题A:
我怎样才能
是否对代码必须在何处/何时执行才能成为成功覆盖率的一部分有一些限制?我在我的信息技术方法中给代表们打电话。在测试模块的构建过程中,是否已经需要调用它们?
我的测试代码定义了一些传递给构造函数的委托方法(例如"showErrors") (例如,新的saveCommand(.,showErrors))。将突出显示委托的方法声明,而不将其包含在覆盖率中。但是,这些代表实际上是在测试期间执行的,我预计覆盖率将达到100 %。
即使showErrors委托中的代码是私有的,我也想测试它(是否应该测试私有方法,这不是我的问题)。为了在测试中执行委托,我模拟saveCommand。模拟的saveCommand发布传递的委托,在测试中我显式地调用它:
sut.saveCommand.__showErrors();
expect(showAllMessagesSpy).toHaveBeenCalled();测试成功地执行,对我来说很好。然而,覆盖的结果并不像预期的那样。
问题B:
引用文件errorhandler.js的主要覆盖率结果显示了27.59 %的覆盖率。我还没有对errorhandler.js进行测试。这个数字是否意味着errorhandler.js现有的29条语句中有8条是在执行主文件referenceFigureEdit.js时执行的?我的主文件直接引用errorhandler.js,但不直接引用utils.js。我在哪里可以找到一些关于如何正确解释这些“子数字”的文档,以及总数47.66%的目的是什么?
发布于 2016-05-19 21:49:07
我可以回答问题A:您可以使用chutzpah.json文件来指定排除:"CodeCoverageExcludes":"path1“、"path2”、"path3“、”等等“,据我所知,您只能排除文件,但不能排除特定的行。
更新:是的,blanket.js是默认的代码覆盖工具,它只排除在文件级别。
问题B我也想弄清楚。
https://stackoverflow.com/questions/37298684
复制相似问题