有没有办法在构建在 Jasmine 之上的 JavaScript Jest 测试框架中进行代码覆盖?
11 回答
使用Jest 21.2.1--coverage
时,我可以在命令行中查看代码覆盖率,并通过传递给 Jest 脚本来创建覆盖率目录。下面是一些例子:
我倾向于在本地安装 Jest,在这种情况下,命令可能如下所示:
npx jest --coverage
我假设(尽管尚未确认),如果我在全球范围内安装 Jest,这也将起作用:
jest --coverage
非常稀疏的文档在这里
当我导航到coverage/lcov-report目录时,我发现了一个可以加载到浏览器中的index.html文件。它包括在命令行打印的信息,以及附加信息和一些图形输出。
更新:2018 年 7 月 20 日 - 添加了 coverageReporters 的链接和更新名称。
更新:2017 年 8 月 14 日 - 这个答案完全过时了。现在看看 Jest 文档。他们有关于如何做到这一点的官方支持和文档。
@hankhsiao 有一个分叉回购,伊斯坦布尔正在与 Jest 合作。将此添加到您的开发依赖项
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
还要确保在你的 package.json 笑话条目中启用了覆盖,你还可以指定你想要的格式。(html非常糟糕)。
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"],
}
请参阅关于coverageReporters的Jest 文档(默认为 )["json", "lcov", "text"]
或者--coverage
在您调用 jest 时添加。
2019 年 1 月:Jest 版本 23.6
对于最近研究这个问题的任何人,特别是如果使用npm
或yarn
直接测试
目前,您不必更改配置选项
根据Jest 官方网站,您可以执行以下操作来生成覆盖率报告:
1- 对于 npm:
您必须--
在传递--coverage
Jest 的参数之前放置
npm test -- --coverage
如果您尝试在--coverage
没有的情况下直接调用--
它是行不通的
2- 对于纱线:
可以--coverage
直接传 jest 的参数
yarn test --coverage
这对我有用:
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"]
},
"scripts": {
"test": "jest --coverage"
},
跑:
yarn/npm test
检查最新的 Jest (v 0.22):https ://github.com/facebook/jest
Facebook 团队将伊斯坦布尔代码覆盖率输出添加为覆盖率报告的一部分,您可以直接使用它。
执行 Jest 后,您可以在控制台中获取覆盖率报告,在 Jest 设置的根文件夹下,您会找到 JSON 和 HTML 格式的覆盖率报告。
仅供参考,如果您从 npm 安装,您可能无法获得最新版本;所以首先尝试 GitHub 并确保覆盖范围是您需要的。
您可以运行 npx jest --coverage -- path/to/your/file.spec.js 这将显示受影响文件的覆盖范围
如果您想在浏览器中查看此内容,您可以执行以下操作,
- 转到浏览器和 CMD+O。
- 导航到您的存储库并搜索coverage/lcov-report/index.html
您也可以参考下面的这个链接,了解更多信息 https://dev.to/stevescruz/awesome-jest-tip-coverage-report-h5j
如果您在 --coverage 无法正常工作时遇到问题,也可能是由于启用了coverageReporters 而没有添加“text”或“text-summary”。来自文档:“注意:设置此选项会覆盖默认值。添加“文本”或“文本摘要”以在控制台输出中查看覆盖率摘要。” 资源
如果您使用的是NestJS框架,则可以使用以下命令获取代码覆盖率:
npm run test:cov
我有同样的问题,我将其修复如下。
- 安装纱线
npm install --save-dev yarn
- 安装 jest-cli
npm install --save-dev jest-cli
- 将此添加到 package.json
"jest-coverage": "yarn run jest -- --coverage"
编写测试后,运行命令npm run jest-coverage
。这将在根目录中创建一个覆盖文件夹。/coverage/icov-report/index.html具有代码覆盖率的 HTML 视图。
试试Chutzpah。我刚用过。我写了一篇关于如何集成到 Visual Studio 的博客。
这就是我使用 Chutzpah 进行代码覆盖的方式:Code Coverage with Chutzpah