将 Jest 覆盖阈值添加到 create-react-app 项目

Add Jest coverage threshold to create-react-app project

这是最初使用 create-react-app 生成的 package.json 文件的 "scripts" 部分:

"scripts": {
  "start": "concurrently \"react-scripts start\" \"node server.js\"",
  "build": "react-scripts build",
  "eject": "react-scripts eject",
  "test": "react-scripts test --env=jsdom --coverage --watchAll",
  "start:server": "node server"
},

我想将 Jest 配置为具有这样的 coverage threshold

"jest": {
  "coverageThreshold": {
    "global": {
      "branches": 100,
      "functions": 100,
      "lines": 100,
      "statements": 100
    }
  }
}

但是,当我 运行 yarn test 时,看起来 "jest" 部分并没有被执行。我需要添加一些额外的东西 b/c 这个项目是用 create-react-app 构建的吗?

谢谢!

问题是 create-react-app 使用自己的设置 here. The easiest thing would be to eject: npm run eject 来完全控制设置。

另一种方法是将所有设置复制到您自己的设置中,然后使用附加参数 --config=<pathToYourSettings>

开始测试

可以覆盖create-react-app#coverage-reporting指示的某些覆盖率报告指标。请注意,这必须在你的 package.json 中配置,因为这是 create-react-app 寻找你覆盖的地方(也就是,不在 .jestrcjest.config.js 文件中)。但是正如@Andreas 提到的,如果您想完全控制,弹出或创建您自己的配置。

作为旁注,您可以通过使用 --config 标志和 test 脚本(来自 jest)从 create-react-app 中提取 jest 配置,然后复制它使用您的更新进入您自己的配置。可能比弄清楚 create-react-app 在做什么更容易。

现在,react-app-rewired 可能是一条新的道路。

您可以在 package.json 中提到的笑话部分配置 Jest: https://github.com/timarney/react-app-rewired#2-jest-configuration---testing

package.json

  1. 将新的 npm script 添加到报道
"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "coverage": "npm test -- --coverage",
    "eject": "react-scripts eject"
}
  1. 并添加一个jest config
"jest": {
    "coverageThreshold": {
      "global": {
        "statements": 100,
        "branches": 50,
        "functions": 100,
        "lines": 100
      }
    }
  },
  1. npm run coverage

你可以参考这个最新的link:Configuring threshold limit

通过将此添加到您的 package.json:

"jest": {
    "coverageThreshold": {
      "global": {
        "branches": 75,
        "functions": 75,
        "lines": 75,
        "statements": 75
      }
    }
  }