Javascript 如何使用Jest获取代码覆盖率报告?
在JavaScriptJest测试框架中有没有一种方法可以覆盖代码,该框架构建在Jasmine之上 内部框架打印出它得到的代码覆盖率。我也尝试过使用和,但都不起作用。试试。我刚刚用过。我写了一篇关于如何在VisualStudio中集成的博客 这就是我如何用Chutzpah实现代码覆盖的方法:Javascript 如何使用Jest获取代码覆盖率报告?,javascript,jestjs,Javascript,Jestjs,在JavaScriptJest测试框架中有没有一种方法可以覆盖代码,该框架构建在Jasmine之上 内部框架打印出它得到的代码覆盖率。我也尝试过使用和,但都不起作用。试试。我刚刚用过。我写了一篇关于如何在VisualStudio中集成的博客 这就是我如何用Chutzpah实现代码覆盖的方法: 查看最新的笑话(V0.22): Facebook团队将代码覆盖率输出添加为覆盖率报告的一部分,您可以直接使用它 在执行Jest之后,您可以在控制台中获得一个覆盖率报告,在Jest设置的根文件夹下,您可以
更新:2018年7月20日-增加了coverageReporters的链接和更新名称 更新:2017年8月14日-此答案完全过时。现在就看笑话文档吧。他们有关于如何做到这一点的官方支持和文件 @汉晓有一个分岔回购协议,伊斯坦布尔正与笑话合作。将此添加到您的开发依赖项中
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
还要确保在package.json jest条目中启用了覆盖率,并且还可以指定所需的格式。(html非常糟糕)
请参阅(默认值为[“json”、“lcov”、“text”]
)
或者在调用jest时添加
--coverage
。我也遇到了同样的问题,我修复了它,如下所示
npm安装--保存开发纱线
npm安装--保存开发jest cli
“jest覆盖范围”:“纱线运行jest--coverage”
编写测试后,运行命令
npm run jest coverage
。这将在根目录中创建一个覆盖率文件夹/coverage/icov report/index.html具有代码覆盖率的html视图。使用Jest 21.2.1时,我可以在命令行中看到代码覆盖率,并通过将--coverage
传递给Jest脚本来创建覆盖率目录。以下是一些例子:
我倾向于在本地安装Jest,在这种情况下,命令可能如下所示:
npx笑话——覆盖范围
我假设(尽管尚未确认),如果我在全球安装Jest,这也会起作用:
jest——覆盖范围
非常稀疏的文档是
当我导航到coverage/lcov report目录时,我发现了一个index.html文件,可以加载到浏览器中。它包括在命令行上打印的信息、附加信息和一些图形输出。2019年1月:Jest 23.6版
对于最近研究此问题的任何人,尤其是直接使用npm
或纱线进行测试的人
目前,您不必更改配置选项
根据,您可以执行以下操作以生成覆盖率报告:
1-对于npm:
在传递Jest的--coverage
参数之前,必须先放入--
npm test -- --coverage
如果尝试直接调用--coverage
而不调用--
,它将无法工作
2-对于纱线:
您可以直接传递jest的--coverage
参数
yarn test --coverage
如果您在--coverage不起作用方面遇到问题,也可能是由于启用了coverageReporters而没有添加“text”或“text summary”。
在文档中:“注意:设置此选项将覆盖默认值。添加“文本”或“文本摘要”以查看控制台输出中的覆盖率摘要。”配置package.json文件
“测试”:“玩笑——覆盖范围”
现在运行:
yarn test
所有测试都将开始运行,您将获得报告。
如果您正在使用框架,您可以使用以下命令获得代码覆盖率:
npm run test:cov
这对我很有用:
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"]
},
"scripts": {
"test": "jest --coverage"
},
运行:
您可以运行npx jest--coverage--path/to/your/file.spec.js
这将显示受影响文件的覆盖范围
如果要在浏览器中查看此内容,可以执行以下操作:
转到浏览器并按CMD+O键
导航到您的回购协议并搜索覆盖率/lcov report/index.html
然后,您可以直观地看到所有覆盖区域。
有关更多信息,您也可以参考下面的此链接
我不太喜欢开玩笑,但你们看到了吗?Chutzpath是建在毯子上的,我在上面说明了开玩笑不适用于它。很有趣,因为我的玩笑刚刚起作用。您没有使用Jest,默认情况下,Jest会模拟每个需要的。问题是如何获得Jest的代码覆盖率。Istanbul和Jest不一起工作可能是真的,但这并不能回答问题。coverage Formats选项已被删除--看起来每次都会生成json和html。我使用--coverage选项,但完全没有什么不同。它(现在)被称为coverage Reporters
,默认值为[“json”,“lcov”,“text”]
。请参阅不工作,未知选项“coverage formats”,值为[“json”,“html”]已找到。无需安装Thread。Thread只是与NPMinitial不同的包管理器--
它只需要使用npm,Thread将所有参数传递给jest。切勿使用全局模块。为确保版本一致性和包的存在,请始终通过/node\u modules/.bin/jest--cov在节点\u modules
中使用可执行文件erage
。只要包名在package.json中,您就可以保证使用您期望的jest的准确版本执行。如何仅对更改的文件获取jest覆盖率?如果覆盖率低于某个限制,是否有一种简单的方法使测试失败?相应的SO问题:@ShanikaEdiriweera如何仅对更改的文件获取jest覆盖率?C什么时候被绞死的?你可能
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"]
},
"scripts": {
"test": "jest --coverage"
},
yarn/npm test