如何运行git pre-commit钩子以确保暂存文件的测试覆盖率不会降低?

13
我在我的ReactJS项目中使用jest和istanbul编写测试用例并检查测试覆盖率。
如何使用预提交挂钩确保任何我已暂存到git的文件的测试覆盖率不会降低到其提交之前的当前值?
1个回答

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
      }
    }
  }
}

你可以将其与 lint-stagedhusky 结合使用,实现在提交前进行检查。

最终,你的 package.json 将如下所示:

{
  ...package.json
  "husky": {
    "hooks": {
      "pre-commit": "jest",
    }
  }
}

1
我只想确保每次提交时,暂存文件的测试覆盖率不会降低。如何在不定义任何固定阈值的情况下实现这一点? - Ayan
2
请查看 https://www.npmjs.com/package/jest-coverage-validator 和 https://www.npmjs.com/package/jest-coverage-ratchet。 - Doğancan Arabacı

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接