【发布时间】:2014-09-09 15:24:54
【问题描述】:
有没有办法在构建于 Jasmine 之上的 JavaScript Jest 测试框架中进行代码覆盖?
内部框架does not 打印出它得到的代码覆盖率。我也尝试过使用Istanbul、blanket 和JSCover,但它们都不起作用。
【问题讨论】:
-
我不太喜欢开玩笑,但你见过config.collectCoverage吗?
标签: javascript jestjs
有没有办法在构建于 Jasmine 之上的 JavaScript Jest 测试框架中进行代码覆盖?
内部框架does not 打印出它得到的代码覆盖率。我也尝试过使用Istanbul、blanket 和JSCover,但它们都不起作用。
【问题讨论】:
标签: javascript jestjs
使用 Jest 21.2.1 时,我可以在命令行中查看代码覆盖率,并通过将 --coverage 传递给 Jest 脚本来创建覆盖率目录。下面是一些例子:
我倾向于在本地安装 Jest,在这种情况下,命令可能如下所示:
npx jest --coverage
我假设(尽管尚未确认),如果我在全球范围内安装 Jest,这也会起作用:
jest --coverage
非常稀疏的文档是here
当我导航到 coverage/lcov-report 目录时,我发现了一个可以加载到浏览器中的 index.html 文件。它包括在命令行打印的信息,以及附加信息和一些图形输出。
【讨论】:
./node_modules/.bin/jest --coverage 使用node_modules 中的可执行文件。只要包在 package.json 中命名,您就可以保证以您期望的确切版本的 jest 执行。
更新:2018 年 7 月 20 日 - 为 coverageReporters 添加了链接并更新了名称。
更新:2017 年 8 月 14 日 - 这个答案完全过时了。现在看看 Jest 文档。他们有关于如何做到这一点的官方支持和文档。
@hankhsiao 有一个分叉的 repo,Istanbul 正在与 Jest 合作。将此添加到您的开发依赖项中
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
还要确保在你的 package.json jest 条目中启用了覆盖,你还可以指定你想要的格式。 (html 很糟糕)。
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"],
}
coverageReporters 见 Jest documentation(默认为 ["json", "lcov", "text"])
或者在调用 jest 时添加--coverage。
【讨论】:
coverageReporters,默认为["json", "lcov", "text"]。见facebook.github.io/jest/docs/…
对于最近研究此问题的任何人尤其是直接使用npm 或yarn 进行测试时
目前,您不必更改配置选项
根据Jest official website,您可以执行以下操作来生成覆盖率报告:
您必须在传递 Jest 的 --coverage 参数之前输入 --
npm test -- --coverage
如果您尝试在不使用 -- 的情况下直接调用 --coverage,它将无法正常工作
你可以直接传递jest的--coverage参数
yarn test --coverage
【讨论】:
--watch 设置。
package.json的状态做了很多假设。
这对我有用:
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"]
},
"scripts": {
"test": "jest --coverage"
},
运行:
yarn/npm test
【讨论】:
package.json。
查看最新的 Jest (v 0.22):https://github.com/facebook/jest
Facebook 团队将 Istanbul 代码覆盖率输出添加到覆盖率报告中,您可以直接使用它。
执行Jest后,可以在控制台获取覆盖率报告,在Jest设置的根目录下,可以看到JSON和HTML格式的覆盖率报告。
仅供参考,如果您从 npm 安装,您可能无法获得最新版本;因此,请先尝试 GitHub,并确保覆盖范围是您所需要的。
【讨论】:
你可以运行 npx jest --coverage -- path/to/your/file.spec.js 这将显示受影响文件的覆盖范围
如果你想在浏览器中查看,可以如下操作,
您也可以参考下面的这个链接,了解更多信息 https://dev.to/stevescruz/awesome-jest-tip-coverage-report-h5j
【讨论】:
如果您在使用 --coverage 时遇到问题,也可能是由于启用了coverageReporters 而没有添加“text”或“text-summary”。 来自文档:“注意:设置此选项会覆盖默认值。添加“文本”或“文本摘要”以在控制台输出中查看覆盖摘要。” Source
【讨论】:
如果您使用的是NestJS 框架,您可以使用以下命令获取代码覆盖率:
npm run test:cov
【讨论】:
我遇到了同样的问题,我按照下面的方法修复了它。
npm install --save-dev yarn
npm install --save-dev jest-cli
"jest-coverage": "yarn run jest -- --coverage"
编写测试后,运行命令npm run jest-coverage。这将在根目录中创建一个覆盖文件夹。 /coverage/icov-report/index.html 有代码覆盖率的 HTML 视图。
【讨论】:
-- 只需要使用 npm,yarn 将所有参数传递给 jest。
试试Chutzpah。我刚刚使用它。我还写了一篇关于如何集成到 Visual Studio 的博客。
这就是我使用 Chutzpah 进行代码覆盖的方式:Code Coverage with Chutzpah
【讨论】:
require。