如果测试覆盖率低于一定百分比,如何停止提交?

How to stop a commit if test coverage is below a certain percentage?

我正在使用 Jest 来测试 NestJS 应用程序,我正在尝试创建一个 git 带有 husky 的挂钩,如果测试覆盖率低于 95%,它将不允许提交,我还没有尝试过任何东西,因为我真的不知道如何正确地描述我的问题。 但为了更清楚,我需要的是一个 git 钩子,就像这样:

#!/bin/sh
. "$(dirname "[=10=]")/_/husky.sh"

npm run format
npm run lint
npm run test

git add -u

create a git hook with husky that will not allow a commit if tests coverage are under 95%

看来你已经在 husky 上有一个测试挂钩,如果那个 npm run test 正在使用 Jest,就像我假设的那样,你需要做的就是在你的 [=14] 中添加一个 Jests 配置=].

打开 package.json 并搜索 属性 比如:

  "jest": {

这是您放置 Jest 配置参数的地方。 只需向其中添加以下属性:

    "collectCoverage": true,
    "coverageThreshold": {
      "global": {
        "lines": 95
      }
    }

您将要将 lines 属性 值更改为您想要的任何百分比。

附带说明一下,我很确定这是默认的 Jest 配置,但您还需要 select 您想要 运行 测试覆盖率分析的文件夹和文件,因为您已经有一个测试挂钩你可能已经有了这个,但只是为了确保:

    "collectCoverageFrom": [
      "./src/**/*.(t|j)s"
    ],

这将 运行 对 /src 目录中的每个文件(.JS 或 .TS)进行覆盖率测试。 现在,每当您提交某些内容或尝试 运行 npm run test 时,它还会 运行 测试覆盖率并在低于 selected 值时阻止提交。