当使用Karma和Istanbul时,从覆盖范围中排除文件
Excluding files from coverage when using Karma and Istanbul
我使用Karma来测试我的JavaScript并获得覆盖率报告。我使用的是伊斯坦布尔覆盖报告,这是默认的。这是我的preprocessors参数:
preprocessors: {
'framework/**/*.js':'coverage',
'framework/*.js':'coverage',
'!framework/node/**/*.js':'coverage',
'!framework/test/**/*.js':'coverage',
'framework-lib/**/*.js':'coverage',
'!framework-lib/tool-data-api/tool-data-api.js':'coverage'
}
正如您所看到的,我试图使用"!"作为否定命令,这通常适用于Node。但是,它在这里不起作用,并且我的所有目录都没有被排除。
有什么方法可以做我想要完成的事情吗?
根据https://karma-runner.github.io/0.12/config/configuration-file.html:
因此,基于此,我尝试了以下操作:**/*.js:所有子目录下扩展名为"js"的文件
**/!(jquery).js:与之前相同,但不包括"jquery.js"
**/(foo|bar).js:在所有子目录中,所有"foo.js"或"bar.js"文件
preprocessors: {
'framework/**/!(node|test)/*.js': 'coverage',
'framework-lib/**/!(tool-data-api).js': 'coverage'
}
它似乎已经完成了你所寻找的。
对于那些来这里寻找如何瞄准除.spec.js文件之外的所有文件的人来说,请尝试:
'**/!(*spec).js'
这似乎对我有用
在Karma中使用了minimatch.js库作为数学文件。所以你需要重写你的规则。例如,要排除文件夹节点,它应该有
preprocessors: {
'framework/*[!node]/*.js':'coverage',
}
我不确定你是否正在运行"istanbul cover…"来运行你的覆盖率报告,但如果你是,你可以使用-x标志来排除文件/模式。输入"istanbul help cover"将显示包含此内容的用法。
-x <exclude-pattern> [-x <exclude-pattern>]
one or more fileset patterns e.g. "**/vendor/**"
确保您想要排除的目录/文件没有被任何其他包含加载。例如,'framework//.js':'coverage'会加载你想要排除的文件在'!framework/node//.js':'coverage'
可以在angular.json
下修改test
->options
"codeCoverageExclude": ["src/testing/**/*"]
- 在循环中分配json值时,值被覆盖
- 正在全局范围中查找JavaScript函数
- Sonarqube通用覆盖范围-结果在哪里
- Sonarqube不会从LCOV检索我的JavaScript覆盖范围
- WebDriver Selenium:Javascript代码覆盖范围,无需服务器访问
- W3C 通知覆盖范围
- Javascript 覆盖回调的范围
- 茉莉花+伊斯坦布尔覆盖范围不起作用
- 可变范围,不要覆盖
- 如何在不覆盖父范围的情况下将参数传递给指令
- Javascript 闭包 - 全局范围内被覆盖函数的行为
- IntelliJ的服务器端JS覆盖范围
- javascript函数范围和覆盖
- 检测标记是否在谷歌地图上的圆圈覆盖范围内(Javascript API V3)
- 删除或覆盖Restangular中限定范围配置的请求拦截器
- 原型覆盖范围问题
- 使用伊斯坦布尔的nightwatch.js代码覆盖范围
- 扩展/覆盖 jQuery 对象文字方法 - 超出范围的问题
- “ng-repeat”上的自定义过滤器确实会覆盖范围
- 当使用Karma和Istanbul时,从覆盖范围中排除文件