Answers:
使用Jest 21.2.1时,我可以在命令行上查看代码覆盖率,并通过传递--coverage
到Jest脚本来创建coverage目录。以下是一些示例:
我倾向于在本地安装Jest,在这种情况下,命令可能看起来像这样:
npx jest --coverage
我假设(尽管尚未确认),如果我在全球范围内安装Jest,这也将起作用:
jest --coverage
非常稀疏的文档在这里
当我导航到coverage / lcov-report目录时,我发现可以加载到浏览器中的index.html文件。它包括在命令行上打印的信息,以及其他信息和一些图形输出。
node_modules
via中使用可执行文件./node_modules/.bin/jest --coverage
。只要包在package.json中被命名,就可以保证使用您期望的准确的jest版本执行。
更新:7/20/2018-为coverageReporters添加了链接并更新了名称。
更新:8/14/2017-这个答案完全过时了。现在就看看Jest文档。他们具有官方支持和有关如何执行此操作的文档。
@hankhsiao有一个分叉的仓库,伊斯坦布尔正在与Jest合作。将此添加到您的开发依赖项
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
还要确保在package.json的jest条目中启用了coverage,并且您还可以指定所需的格式。(HTML是相当糟糕的屁股)。
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"],
}
请参阅Jest文档以了解coverageReporters(默认值为 ["json", "lcov", "text"]
)
或--coverage
在您开玩笑时添加。
对于最近正在研究此问题的任何人,尤其是使用npm
或yarn
直接进行测试的人
当前,您不必更改配置选项
按照jest官方网站,您可以执行以下操作来生成覆盖率报告:
您必须--
先通过--coverage
开玩笑的论点
npm test -- --coverage
如果您尝试--coverage
直接调用不带的--
,则将不起作用
您可以--coverage
直接传递笑话的参数
yarn test --coverage
--watch
设置。
package.json
。
好吧,请忽略我以前的回答,因为有人告诉我它不能解决问题。
新答案:
1)检查最新的玩笑(v 0.22):https : //github.com/facebook/jest
2)Facebook团队将伊斯坦布尔作为覆盖率报告的一部分,您可以直接使用它。
3)执行完jest后,您可以在控制台上获得覆盖报告,并在jest设置的根文件夹下找到json和html格式的覆盖报告。
4)仅供参考,如果从npm安装,则可能无法获取最新版本;因此,请首先尝试github,并确保覆盖范围是您所需要的。
旧答案:
也有同样的问题。简短的回答是:Istanbul
和Jest
不能一起工作。
检查以下页面以获取更多详细信息:
https://github.com/facebook/jest/issues/101
jest使用contextify在本地代码的V8上下文中运行JS脚本,因此绕过了伊斯坦布尔的所有require和vm.runInThisContext钩子。因此,由于没有使用标准的可挂接的node.js函数,并且由于每次测试都在其自己的沙箱中运行并且没有全局可用于覆盖coverage对象的位置,因此预先插入文件也无济于事,伊斯坦布尔的覆盖将无法正常工作。
@Ciro Costa:该config.collectCoverage
功能无效,因为它是“ TODO”功能。请检查源代码。
我有同样的问题,我如下修复。
npm install --save-dev yarn
npm install --save-dev jest-cli
"jest-coverage": "yarn run jest -- --coverage"
编写测试后,运行命令npm run jest-coverage。这将在根目录中创建coverage文件夹。/coverage/icov-report/index.html具有html代码覆盖率视图。
祝您编码愉快!
尝试Chutzpah。我刚用过。我写了关于如何在Visual Studio中进行集成的博客。
这就是我对Chutzpah进行代码覆盖的方式:http ://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/
require
。