gpt4 book ai didi

javascript - 开 Jest : running tests with coverage in pre-commit-hook exits with 1 if no coverage was found

转载 作者:行者123 更新时间:2023-12-01 15:28:25 26 4
gpt4 key购买 nike

我正在尝试在预先提交的钩子(Hook)中对暂存文件运行测试。到目前为止,一切都很好。可以使用 pre-commitlint-staged NPM 包。

来自 package.json 的片段:

{
// ...
"scripts": {
"hook": "lint-staged",
// ...
},
"devDependencies": {
"eslint": "^4.12.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-prettier": "^2.3.1",
"jest": "^22.0.3",
"jest-junit": "^3.4.0",
"lint-staged": "^6.0.1",
"pre-commit": "^1.2.2",
"prettier": "^1.9.1"
},
"jest": {
"collectCoverageFrom": ["src/**/*.js"],
"coveragePathIgnorePatterns": ["<rootDir>/src/models/"],
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": 80
}
}
},
"pre-commit": ["hook"],
"lint-staged": {
"*.js": ["eslint --fix", "git add", "jest --bail --passWithNoTests --coverage"]
},
// ...
}

那里还有更多,但我认为这些是重要的部分。

我遇到的问题是,如果我暂存没有任何测试或被 "coveragePathIgnorePatterns": ["<rootDir>/src/models/"] 的 b/c 忽略的文件, 开 Jest 退出 1 - 所以没有提交。通过添加 --passWithNoTests 找到了解决方法.伟大的。但现在我也想检查覆盖率 - 当没有测试(因此没有覆盖率数据)时,这也会失败:
----------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files | Unknown | Unknown | Unknown | Unknown | |
----------|----------|----------|----------|----------|----------------|

Jest: Coverage data for global was not found.

是否有另一个标志我可以用来忽略它的覆盖范围(如 --passWithNoTests 用于实际测试)?或者有人有更好的想法如何做到这一点?

或者我应该跳过这些预提交测试的覆盖范围吗?

最佳答案

您可以使用 husky 和 ​​lint-staged 对其进行分解,如下所示:

 "lint-staged": {
"src/**/*.(spec|test).ts": [
"npm run test"
],
"src/**/*.{ts,vue}": [
"eslint --fix",
"prettier --write"
]
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
这样,如果测试目录中没有暂存文件,它只会跳过测试并转到下一项,即 eslint --fixprettier --write

关于javascript - 开 Jest : running tests with coverage in pre-commit-hook exits with 1 if no coverage was found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48345760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com