如何在测试 React.js App 时从 Jest 获得测试覆盖率?

Posted

技术标签:

【中文标题】如何在测试 React.js App 时从 Jest 获得测试覆盖率?【英文标题】:How to get test coverage from Jest while testing React.js App? 【发布时间】:2015-04-01 17:33:20 【问题描述】:

我们需要检查我们的 React.js 应用程序的测试覆盖率,理想情况下获取 lcov.info 输出以发送到第三方覆盖率跟踪器,如 Coveralls 或CodeClimate

从Jest API 不清楚运行测试时如何获取测试覆盖率信息。

GitHub 上有一个 Open 问题:https://github.com/facebook/jest/issues/101 和相关的拉取请求:https://github.com/facebook/jest/pull/178 但是PR还没有被Jest核心团队合并。

是否有一种替代方法可以获取有效的覆盖信息今天

注意:我知道 @adrian-adkison 建议在:https://***.com/a/27479903/1148249 但 @hankhsiao's fork 与 jest-cli 相当过时,因为他2.5 个月前提交了 Pull Request...

【问题讨论】:

【参考方案1】:

@hankhsiao 的分叉已被合并。我一直在使用最新的https://github.com/facebook/jest 并取得了很好的效果。

jest --coverage

【讨论】:

TypeScript React 项目失败。【参考方案2】:
npm test -- --coverage

注意中间多出--,docs

【讨论】:

额外的-- 有什么作用? 后面的任何内容 -- 是 npm 将传递给正在运行的脚本的参数,在这种情况下可能是 jest。将导致jest --coverage 这应该是公认的答案。【参考方案3】:

你可以开玩笑

jest --coverage

或者你也可以在你的 package.json 中的 jest 配置中将 "collectCoverage" 设置为 true。这样每次运行 jest 时都会生成覆盖率报告。

尽管您应该知道这会显着增加测试运行所需的时间。

【讨论】:

【参考方案4】:

在你的 package.json 脚本部分下添加这段代码 -

test: react-scripts test --coverage

【讨论】:

以上是关于如何在测试 React.js App 时从 Jest 获得测试覆盖率?的主要内容,如果未能解决你的问题,请参考以下文章

react.js 之 create-react-app 命令行工具系统讲解

如何根据以下条件将变量从 loginform 传递给 app.js,并在使用 react js 时移动到下一个屏幕

React Js API 调用 Jest 测试用例?

如何在(Ionic + React.js App)中自动聚焦 IonInput/OtpInput 字段,我已经尝试了所有解决方案

如何在 react.js 的父组件中检测子渲染

如何测试使用 Context 和 useEffect 的 React.js 页面?