我有一个简单的创建React应用程序。因为我的项目是使用TypeScript编写的,所以我创建了jest.config.ts
文件。
import type { Config } from "@jest/types";
// Sync object
const config: Config.InitialOptions = {
collectCoverageFrom: ["./src/modules/*.tsx", "./src/hooks/*.tsx", "./src/components/*.tsx"],
coverageThreshold: {
global: {
statements: 100,
branches: 100,
functions: 100,
lines: 100,
},
},
};
export default config;
但是当我运行
npm t
或npm run test --watch
时,我的配置文件中的coverageThreshold
和collectCoverageFrom
不起作用。我不知道出了什么问题。
之前我的配置文件扩展名为js
,但我更改了它的类型,因为我认为这是它无法正常工作的原因。我还尝试编写以下内容,而不是这个
collectCoverageFrom: ["./src/modules/*.tsx", "./src/hooks/*.tsx", "./src/components/*.tsx"],
collectCoverageFrom: ["**/src/modules/*.tsx", "**/src/hooks/*.tsx", "**/src/components/*.tsx"],
和这个
collectCoverageFrom: ["**/src/**/*.tsx"],
jest.config
文件不起作用。
package.json
{
"name": "ui",
"version": "0.1.0",
"private": true,
"dependencies": {
"@emotion/react": "^11.5.0",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@types/node": "^12.0.0",
"@types/react": "^17.0.34",
"web-vitals": "^1.0.1"
// other libs
},
"scripts": {
"start": "react-scripts start",
"proxy": "concurrently \"react-scripts start\" \"npm run mock\" ",
"mock": "nodemon mock --watch mock",
"build": "react-scripts build",
"test": "react-scripts test --coverage",
"eject": "react-scripts eject",
"prettier": "prettier --ignore-path .gitignore --write \"**/*.+(js|json)\"",
"lint": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx .",
"format": "npm run prettier -- --write",
"check-format": "npm run prettier -- --list-different",
"validate": "npm-run-all --parallel lint check-format build"
},
"devDependencies": {
"@testing-library/react-hooks": "^7.0.2",
"@types/jest": "^26.0.24",
"ts-jest": "^27.1.4",
// any other libs
}
}
同时,coverage文件夹中的index.html文件显示覆盖率如下:
60.6% 语句
20/33
40% 分支4/10
46.66% 函数7/15
58.62% 行17/29
这意味着当我运行npm t
时,jest必须向我显示全局覆盖率未达到100%的错误。但是我在终端中没有看到任何错误。