如何运行 git pre-commit hook 以强制暂存文件的测试覆盖率不会减少?

Aya*_*yan 7 git code-coverage istanbul jestjs nyc

我在 ReactJS 项目中使用 jest 和 istanbul 来编写测试用例并检查测试覆盖率。

我如何确保使用预提交钩子来测试我已暂存到 git 的任何文件的测试覆盖率,在提交之前不会从其当前值减少?

Doğ*_*acı 4

您应该从这里检查 jest 的coverageThreshold 文档

以下选项可用于全局覆盖阈值和文件名模式阈值。

{
  ...
  "jest": {
    "coverageThreshold": {
      "global": {
        "branches": 50,
        "functions": 50,
        "lines": 50,
        "statements": 50
      },
      "./src/components/": {
        "branches": 40,
        "statements": 40
      },
      "./src/reducers/**/*.js": {
        "statements": 90
      },
      "./src/api/very-important-module.js": {
        "branches": 100,
        "functions": 100,
        "lines": 100,
        "statements": 100
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以将其与lint stagedhusky结合起来,以进行预提交签入。

最后,你的 package.json 看起来像这样:

{
  ...package.json
  "husky": {
    "hooks": {
      "pre-commit": "jest",
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 检查 https://www.npmjs.com/package/jest-coverage-validator 和 https://www.npmjs.com/package/jest-coverage-ratchet (2认同)