205

有没有办法在构建在 Jasmine 之上的 JavaScript Jest 测试框架中进行代码覆盖?

内部框架不会打印出它获得的代码覆盖率。我也尝试过使用Istanbul毯子JSCover,但它们都不起作用。

4

11 回答 11

236

使用Jest 21.2.1--coverage时,我可以在命令行中查看代码覆盖率,并通过传递给 Jest 脚本来创建覆盖率目录。下面是一些例子:

我倾向于在本地安装 Jest,在这种情况下,命令可能如下所示:

npx jest --coverage

我假设(尽管尚未确认),如果我在全球范围内安装 Jest,这也将起作用:

jest --coverage

非常稀疏的文档在这里

当我导航到coverage/lcov-report目录时,我发现了一个可以加载到浏览器中的index.html文件。它包括在命令行打印的信息,以及附加信息和一些图形输出。

于 2017-10-24T19:39:39.930 回答
105

更新: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 时添加。

于 2014-12-15T08:22:03.140 回答
69

2019 年 1 月:Jest 版本 23.6

对于最近研究这个问题的任何人,特别是如果使用npmyarn直接测试

目前,您不必更改配置选项

根据Jest 官方网站,您可以执行以下操作来生成覆盖率报告:

1- 对于 npm:

您必须--在传递--coverageJest 的参数之前放置

npm test -- --coverage

如果您尝试在--coverage没有的情况下直接调用--它是行不通的

2- 对于纱线​​:

可以--coverage直接传 jest 的参数

yarn test --coverage
于 2019-01-13T21:55:23.110 回答
9

这对我有用:

 "jest": {
    "collectCoverage": true,
    "coverageReporters": ["json", "html"]
  },
  "scripts": {
    "test": "jest  --coverage"
  },

跑:

yarn/npm test
于 2020-11-07T16:56:20.457 回答
7
  1. 检查最新的 Jest (v 0.22):https ://github.com/facebook/jest

  2. Facebook 团队将伊斯坦布尔代码覆盖率输出添加为覆盖率报告的一部分,您可以直接使用它。

  3. 执行 Jest 后,您可以在控制台中获取覆盖率报告,在 Jest 设置的根文件夹下,您会找到 JSON 和 HTML 格式的覆盖率报告。

  4. 仅供参考,如果您从 npm 安装,您可能无法获得最新版本;所以首先尝试 GitHub 并确保覆盖范围是您需要的。

于 2014-11-06T01:08:34.843 回答
4

您可以运行 npx jest --coverage -- path/to/your/file.spec.js 这将显示受影响文件的覆盖范围

如果您想在浏览器中查看此内容,您可以执行以下操作,

  1. 转到浏览器和 CMD+O。
  2. 导航到您的存储库并搜索coverage/lcov-report/index.html

然后您可以直观地看到所有覆盖区域。 在此处输入图像描述

您也可以参考下面的这个链接,了解更多信息 https://dev.to/stevescruz/awesome-jest-tip-coverage-report-h5j

于 2021-05-18T18:22:04.910 回答
3

配置你的 package.json 文件

“测试”:“开玩笑--覆盖”,

在此处输入图像描述

现在运行:

yarn test

所有测试将开始运行,您将获得报告。 在此处输入图像描述

于 2019-09-30T04:38:30.287 回答
2

如果您在 --coverage 无法正常工作时遇到问题,也可能是由于启用了coverageReporters 而没有添加“text”或“text-summary”。来自文档:“注意:设置此选项会覆盖默认值。添加“文本”或“文本摘要”以在控制台输出中查看覆盖率摘要。” 资源

于 2019-06-10T14:43:13.383 回答
0

如果您使用的是NestJS框架,则可以使用以下命令获取代码覆盖率:

npm run test:cov
于 2020-10-13T10:55:21.103 回答
-6

我有同样的问题,我将其修复如下。

  1. 安装纱线npm install --save-dev yarn
  2. 安装 jest-clinpm install --save-dev jest-cli
  3. 将此添加到 package.json"jest-coverage": "yarn run jest -- --coverage"

编写测试后,运行命令npm run jest-coverage。这将在根目录中创建一个覆盖文件夹。/coverage/icov-report/index.html具有代码覆盖率的 HTML 视图。

于 2017-02-08T23:56:56.403 回答
-12

试试Chutzpah。我刚用过。我写了一篇关于如何集成到 Visual Studio 的博客。

这就是我使用 Chutzpah 进行代码覆盖的方式:Code Coverage with Chutzpah

于 2014-09-13T13:33:51.893 回答