将 Jest 文本覆盖报告输出到 .txt

问题描述 投票:0回答:4

Jest 允许您在 package.json 中指定覆盖报告者,如下所示

{
    ...

    "jest": {
        "coverageDirectory": "./coverage",
        "coverageReporters": ["json", "text", ...]
    }

    ...
}

但是,这仅将

.json
摘要输出到覆盖目录。它仅将文本版本打印到控制台。有没有办法将文本版本也输出到覆盖文件夹中的
.txt
文件?

我一直在参考这里的文档,它说它与任何伊斯坦布尔记者兼容。文本伊斯坦布尔记者似乎支持写入文件。有什么办法可以利用它吗?

javascript unit-testing jestjs istanbul
4个回答
4
投票

在 jest 配置中,您可以指定

file
选项,也可以指定
dir
选项,默认为当前工作目录:

"jest": {
  "coverageReporters": [["text", { file: 'coverage.txt' }]]
}

这些选项在笑话文档中简要提及,详细信息在伊斯坦布尔文档此处


2
投票

json

 添加到您的笑话配置中的 
coverageReports

"coverageReporters": ["json"]


然后安装伊斯坦布尔:


npm i -D istanbul



将此脚本添加到

package.json

"scripts": { "test": "jest --coverage && istanbul report --include coverage/coverage-final.json text > coverage.txt", ... }

该脚本将生成代码覆盖率报告文件

coverage-final.json

 然后 istanbul 将生成重定向到的预期输出 
coverage.txt

    


0
投票
@KerSplosh 我们最终用

shelljs

 编写了一个自定义脚本。基本上它运行测试,并将表写入带有 
fs
 的文件。

const shell = require("shelljs"); const path = require("path"); const fs = require("fs"); const result = shell.exec("yarn test --coverage"); fs.writeFileSync( path.resolve(".", "coverage.txt"), result.substring(result.indexOf("|\nFile") + 2) ); if (result.code !== 0) { shell.exit(1); }

但这并不理想。最好通过 Jest 配置来完成此操作。但在我实现这个的时候,我认为这是不可能的。


0
投票

如果你碰巧在笑话之上使用了 React 脚本:

将这些片段添加到 package.json 中的相应部分:

"scripts": { "cover:report": "react-scripts test --coverage .> coverage/coverage-report.txt", } ... "jest": { "collectCoverageFrom": [ "src/**/*.ts*" ], "coverageReporters": ["text"] }
这会在文件coverage/coverage-report.txt中生成覆盖率报告。
“.>”部分中的点告诉脚本获取与“.”匹配的所有文件(除了被忽略的文件)。模式 - 通常是全部。

修改“collectCoverageFrom”字符串数组以根据需要包含文件/文件夹。

不幸的是,这个命令不会自行退出,所以当它完成后挂在那里时,你必须按 Ctrl+C 来结束它。

要在终端中运行它:

"yarn cover:report"


结果包含覆盖率结果的明文表格。

© www.soinside.com 2019 - 2024. All rights reserved.