有没有办法在Javascript Jest测试框架中建立基于Jasmine的代码覆盖率?
内部框架does not打印出它获得的代码覆盖率。我也尝试过使用Istanbul,blanket和JSCover,但这些都不起作用。
答案 0 :(得分:70)
更新: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 documentation了解coverageReporters(默认为["json", "lcov", "text"]
)
或者在调用jest时添加--coverage
。
答案 1 :(得分:53)
使用 Jest 21.2.1 时,我可以在命令行中看到代码覆盖率,并通过将--coverage
传递给Jest脚本来创建coverage目录。以下是一些例子:
我倾向于在本地安装Jest,在这种情况下命令可能如下所示:
npx jest --coverage
我假设(虽然尚未确认),如果我全局安装了Jest,这也会有效:
jest --coverage
非常稀疏的文档是here
当我导航到 coverage / lcov-report 目录时,我发现了一个可以加载到浏览器中的 index.html 文件。它包括在命令行打印的信息,以及附加信息和一些图形输出。
答案 2 :(得分:19)
对于最近正在研究此问题的任何人尤其是如果直接使用npm或yarn进行测试
当前,您无需更改配置选项
根据jest official website,您可以执行以下操作来生成覆盖率报告:
您必须在传递jest的--coverage参数之前放入 public void Configure(IApplicationBuilder builder)
{
var tokenSource=..... //extract the tokensource somehow
builder.UseCors((p) => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials());
builder.UseWebSockets();
builder.Map("/userA", app =>
{
app.UseMiddleware<StatusWare>();
});
builder.Map("/userB", app =>
{
tokenSource.cancel();
});
}
--
如果您尝试不使用npm test -- --coverage
而直接调用--coverage
,将无法使用
您可以直接传递笑话的--
参数
--coverage
答案 3 :(得分:5)
好吧,忽略我之前的回答,因为有人告诉我它没有解决问题。
新答案:
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脚本,从而绕过所有istanbul的require和vm.runInThisContext挂钩。所以istanbul封面不起作用,因为没有使用标准的hookable node.js函数,并且预处理文件也无济于事,因为每个测试都在自己的沙箱中运行,并且没有全局存储覆盖对象。
@Ciro Costa:
config.collectCoverage
无效,因为它是'TODO'功能。请检查源代码。
答案 4 :(得分:0)
如果--coverage无法正常运行,也可能是由于未启用“ text”或“ text-summary”而启用了coverageReporters。 在文档中:“注意:设置此选项将覆盖默认值。添加“文本”或“文本摘要”以在控制台输出中查看覆盖率摘要。” Source
答案 5 :(得分:0)
答案 6 :(得分:0)
如果您使用的是NestJS框架,则可以使用以下命令获得代码覆盖:
npm run test:cov
答案 7 :(得分:0)
这对我有用
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"]
},
"scripts": {
"test": "jest --coverage"
},
运行:纱线/ npm测试
答案 8 :(得分:0)
你可以运行 npx jest --coverage -- path/to/your/file.spec.js 这将显示受影响文件的覆盖范围
如果你想在浏览器中查看这个,你可以这样做,
您也可以参考下面这个链接,了解更多信息 https://dev.to/stevescruz/awesome-jest-tip-coverage-report-h5j
答案 9 :(得分:-1)
我遇到了同样的问题,我将其解决如下。
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视图。
快乐的编码!
答案 10 :(得分:-5)
试试Chutzpah。我刚刚用过它。我在博客上写了关于如何在Visual Studio中集成的内容。
这就是我使用Chutzpah进行代码覆盖的方式:http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/