reactjs - 如何使用 react-create-app 获取代码覆盖率报告?
问题描述
如果我跑
npm test --coverage
测试通过,但覆盖率未运行。
当我改变package.json
有
react-scripts test --coverage
然后,当我这样做npm test
并且a
它运行测试而不是覆盖范围时
测试与覆盖率报告一起运行,但覆盖率显示覆盖率全为零
PASS src/components/Header/SubHeader.test.js
The <SubHeader /> component
✓ should render (4ms)
✓ should render with a goback button (1ms)
✓ should render
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 0 | 0 | 0 | 0 | |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 3 passed, 3 total
Time: 1.077s
Ran all test suites.
终于,我意识到我可以做到
npm run test .
问题:为什么其他方法不起作用?
解决方案
重新审视这个问题后,我发现如果你运行它,你将触发覆盖命令并获得所有结果。
解决方案 1
npm run test -- --coverage .
当您将参数传递给npm
脚本时,您需要--
在添加参数之前添加--coverage
. 这就是npm
工作原理。请参阅此答案以将参数传递给 npm
解决方案 2
yarn test --coverage .
编辑:
我问了一个关于.
传递命令的问题,答案非常简单。.
被传递是因为它是一个位置参数,与命令--coverage
的选项相反npm test
:Why is . 作为参数传递给没有 -- 分隔符的 npm?
---- 问题分析 ----
问题 1
npm test --coverage
您没有将--coverage
参数传递给test
脚本。
在另一种情况下,当您将脚本编辑为:
react-scripts test --coverage
并在npm test
这里运行您实际上添加了参数--coverage
,但在脚本本身中,而不是来自npm
命令
问题 2
当你npm run test .
传递时.
,这意味着你想在这个命令中包含所有文件。
由于某种原因.
被传递给npm run test
脚本但不是--coverage
.
另一方面,yarn
传递所有参数而不传递--
.
推荐阅读
- android - 无法解析 com.android.support:design:28.0.0
- reactjs - React.context 可以用来共享一个公共对象吗?
- c# - Xpath获取包含id的href?
- vba - 使用条件将数据从工作表传输到另一个工作表
- flutter - 如何使用 ListView 将元素放在一起?
- synchronization - 如何同步文件夹 RCLONE?
- differential-equations - 我可以使用 mql4 AlgLib 库来求解具有可变系数的二阶线性齐次微分方程吗
- javascript - 有没有办法在单个 javascript 函数中实现多个类 ID?
- mongodb - 如何将多张图片上传到 mongoDB?
- sql-server - 如何根据条件获取上一行和下一行