不满足阈值时,Jest 测试覆盖率不会失败

Plu*_*mer 7 code-coverage jestjs create-react-app

使用 create-react-app,在我的 CI 管道中运行测试时,如果未满足代码覆盖率阈值,我希望控制台返回非零响应。

包.json

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "test:coverage": "npm run test -- --coverage --watchAll=false",
  },
  "jest": {
    "collectCoverageFrom": [
      "src/components/**/*.js",
      "src/state/**/*.js",
      "src/templates/**/*.js",
      "src/routes/**/*.js"
    ],
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 80
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

运行test:coverage控制台时报告未满足阈值,但仍返回 0。我从 Jest 文档中了解到,当未满足覆盖阈值时,应返回错误。

https://jestjs.io/docs/en/configuration#coveragethreshold-object

具体来说...

If thresholds aren't met, jest will fail.
Run Code Online (Sandbox Code Playgroud)

有人熟悉这个问题吗?我经历过 Jest 和 CRA github 问题,结果喜忧参半,大多数发现都与过时的版本有关。

Jim*_*yLv 7

当命令失败时停止进一步执行:

command || exit 0

{
  "test:coverage": "npm run test -- --coverage --watchAll=false || exit 0"
}
Run Code Online (Sandbox Code Playgroud)

参考:如果执行 shell 失败,jenkins 构建不会失败