Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chutzpah覆盖率小于100%(由于私人方法?)_Javascript_Jasmine_Chutzpah_Test Coverage_Blanket.js - Fatal编程技术网

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

Javascript Chutzpah覆盖率小于100%(由于私人方法?),javascript,jasmine,chutzpah,test-coverage,blanket.js,Javascript,Jasmine,Chutzpah,Test Coverage,Blanket.js,我使用Chutzpah测试我的JavaScript测试覆盖率。下面是运行单个测试文件时覆盖率结果的示例referenceFigureEdit.spec.js: 我希望覆盖率是100%,但只有91.07% 单击第一行,我可以详细检查我的测试代码。突出显示“未被测试覆盖”的行: 问题A: 我怎么能 告诉Chutzpah这些方法实际上已经被执行或者 告诉Chutzpah不要在覆盖结果中包含这些行 对于代码必须在何处/何时执行才能成为成功覆盖的一部分,是否有一些限制?我在我的it方法中调用代理。

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

我希望覆盖率是100%,但只有91.07%

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

问题A

我怎么能

  • 告诉Chutzpah这些方法实际上已经被执行或者
  • 告诉Chutzpah不要在覆盖结果中包含这些行
对于代码必须在何处/何时执行才能成为成功覆盖的一部分,是否有一些限制?我在我的it方法中调用代理。在构建被测模块的过程中是否已经需要调用它们

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

即使DreamRors委托中的代码是私有的,我也希望测试它(是否应该测试私有方法不是我这里的问题)。为了在测试中执行委托,我模拟saveCommand。mocked 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%总数的目的是什么

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

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


问题B我也在试图弄清楚。

我使用文件excludes告诉Chutzpah排除外部库,也排除测试助手模块。排除不能为a提供解决方案。Chutzpah配置文件中的其他选项似乎也不能提供影响特定方法覆盖率的方法。是的,如果不编写自己的代码覆盖率工具,我认为您无法排除特定方法。