reactjs - 如何使用 Jest 配置全局阈值以匹配“所有文件”值?
问题描述
当我使用 --coverage 标志集运行测试时,我收到一条消息,指出我的全局覆盖率阈值未达到。但是当我查看报告中的“所有文件”部分时,它似乎符合我设定的阈值。
起初我认为这是我对 React 组件的覆盖率低,但是当我排除所有组件时,全局百分比仅上升了 1% 或 2%。
所以我的问题是,如何将全局阈值与“所有文件”结果对齐?
这是我运行测试时得到的报告
----------------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------------------------|----------|----------|----------|----------|-------------------|
All files | 86.39 | 80.53 | 90.12 | 87.16 | |
src | 100 | 100 | 100 | 100 | |
settings.js | 100 | 100 | 100 | 100 | |
src/actions | 100 | 72.22 | 100 | 100 | |
deploysActions.js | 100 | 50 | 100 | 100 | 30 |
environmentsActions.js | 100 | 75 | 100 | 100 | 31 |
errorsActions.js | 100 | 100 | 100 | 100 | |
systemsActions.js | 100 | 50 | 100 | 100 | 24 |
tagsActions.js | 100 | 75 | 100 | 100 | 31 |
testResultsActions.js | 100 | 50 | 100 | 100 | 35 |
timeRangeActions.js | 100 | 100 | 100 | 100 | |
src/constants | 100 | 100 | 100 | 100 | |
actions.js | 100 | 100 | 100 | 100 | |
responseColumns.js | 100 | 100 | 100 | 100 | |
src/middleware | 0 | 0 | 0 | 0 | |
localStorageMiddleware.js | 0 | 0 | 0 | 0 | 4,5,6,7,8,11 |
loggerMiddleware.js | 0 | 100 | 0 | 0 | 1,2,3,4,5,6,7 |
src/reducers | 88.55 | 80.17 | 97.37 | 88.05 | |
authReducer.js | 0 | 0 | 0 | 0 |... 44,49,55,56,60 |
deploysReducer.js | 100 | 86.67 | 100 | 100 | 77 |
environmentsReducer.js | 100 | 100 | 100 | 100 | |
errorsReducer.js | 100 | 100 | 100 | 100 | |
rootReducer.js | 0 | 100 | 100 | 0 | 11 |
systemsReducer.js | 100 | 100 | 100 | 100 | |
tagsReducer.js | 100 | 100 | 100 | 100 | |
testResultsReducer.js | 100 | 97.37 | 100 | 100 | 122 |
timeRangeReducer.js | 100 | 100 | 100 | 100 | |
src/store | 0 | 0 | 0 | 0 | |
configureStore.js | 0 | 0 | 0 | 0 |... 11,13,15,16,18 |
src/utils | 94.55 | 94 | 100 | 94.55 | |
api.js | 100 | 100 | 100 | 100 | |
dateTimeFormatting.js | 100 | 100 | 100 | 100 | |
environments.js | 100 | 100 | 100 | 100 | |
errors.js | 100 | 100 | 100 | 100 | |
localStorage.js | 75 | 25 | 100 | 75 | 18,19,21 |
----------------------------|----------|----------|----------|----------|-------------------|
Jest: "global" coverage threshold for statements (50%) not met: 4%
Jest: "global" coverage threshold for branches (50%) not met: 0%
Jest: "global" coverage threshold for lines (50%) not met: 4.76%
Jest: "global" coverage threshold for functions (40%) not met: 0%
这是我开玩笑的配置(注意,组件目录不包括在内)
"jest": {
"collectCoverageFrom": [
"src/**/*.js",
"!**/node_modules/**",
"!**/coverage/**",
"!src/components/**",
"!src/index.js",
"!src/serviceWorker.js"
],
"coverageReporters": ["html", "cobertura", "json", "lcov", "text", "clover"],
"coverageThreshold": {
"global": {
"branches": 50,
"functions": 40,
"lines": 50,
"statements": 50
}
}
}
解决方案
我遇到了同样的问题,但无法找到解决方案。
我使用的解决方法是为每个文件夹设置覆盖范围。使用jest.config.js。
coverageThreshold: {
'./src/actions': {
branches: 80,
functions: 80,
lines: 80,
statements: 80
},
'./src/reducers': {
branches: 80,
functions: 80,
lines: 80,
statements: 80
}
}
如果您找到了解决此问题的实际方法,请告诉我。
你可以做的另一件事,而不是全局是。
coverageThreshold: {
'*/**': {
branches: 80,
functions: 80,
lines: 80,
statements: 80
},
尽管这会检查每个文件的 80% 覆盖率。不是我们正在寻找的所有文件的实际平均值
推荐阅读
- microsoft-graph-api - 发布 #microsoft.graph.exclusionGroupAssignmentTarget 的问题
- reactjs - React-select:如何将创建的项目添加到选项列表
- kubernetes - Flink 1.13.2 HA 与 K8s
- java - PowerMock @PrepareForTest 为包含排序调用的类引发异常 [JAVA 8]
- python - 识别 message.content discord.py 中的单词
- python - How to detect color of excel(.xlsx) row
- php - How to make PHP flush() work on Azure web apps?
- python - 在 SARIMAX 模型中使用自动生成的 pdqm 参数进行预测
- python - 遍历 Python 字典中的键
- node.js - 使用 $push 对数组进行多次更新