首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jest:如果没有找到覆盖率,则在pre-commit-hook出口中运行覆盖率为1的测试

jest:如果没有找到覆盖率,则在pre-commit-hook出口中运行覆盖率为1的测试
EN

Stack Overflow用户
提问于 2018-01-20 00:43:34
回答 1查看 3.3K关注 0票数 6

我正在尝试使用jest在预提交钩子中对暂存文件运行测试。到现在为止还好。让它与pre-commitlint-staged NPM包一起工作。

来自package.json的代码片段:

代码语言:javascript
复制
{
  // ...
  "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找到了一个绕过这个问题的方法。太棒了。但是现在我也想检查覆盖率-当没有测试(因此没有覆盖率数据)时,这也会失败:

代码语言:javascript
复制
----------|----------|----------|----------|----------|----------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files |  Unknown |  Unknown |  Unknown |  Unknown |                |
----------|----------|----------|----------|----------|----------------|

            Jest: Coverage data for global was not found.

有没有另一个标志我可以用来忽略覆盖范围(就像实际测试中的--passWithNoTests )?还是有人有更好的想法来做这件事?

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

EN

回答 1

Stack Overflow用户

发布于 2020-07-31 17:21:33

您可以使用husky和lint-staged将其分解,如下所示:

代码语言:javascript
复制
 "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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48345760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档