Jestjs 未找到测试用例

Jestjs 未找到测试用例,jestjs,husky,lint-staged,Jestjs,Husky,Lint Staged,我在使用lint staged插件时遇到了一个奇怪的问题。早些时候它运转良好 所以问题是,当我运行npm运行测试时,它会生成覆盖率报告 “测试”:“跨环境CI=true反应脚本测试——覆盖率” 但是当我使用huskypre-commit和lint-staged运行相同的命令时,它不起作用。当我检查控制台时,我发现它正在针对已修改的文件运行 > portal@0.1.0 test /Users/carlos/Desktop/portal > cross-env CI=true rea

我在使用
lint staged
插件时遇到了一个奇怪的问题。早些时候它运转良好

所以问题是,当我运行
npm运行测试时,它会生成覆盖率报告

“测试”:“跨环境CI=true反应脚本测试——覆盖率”

但是当我使用
husky
pre-commit和
lint-staged
运行相同的命令时,它不起作用。当我检查控制台时,我发现它正在针对已修改的文件运行

> portal@0.1.0 test /Users/carlos/Desktop/portal
> cross-env CI=true react-scripts test --coverage "/Users/carlos/Desktop/portal/src/container/Auth/Login.page.js"

No tests found, exiting with code 1
Run with `--passWithNoTests` to exit with code 0
In /Users/carlos/Desktop/portal
44 files checked.
testMatch: /Users/carlos/Desktop/portal/src/**/__tests__/**/*.{js,jsx,ts,tsx}, /Users/carlos/Desktop/portal/src/**/*.{spec,test}.{js,jsx,ts,tsx} - 6 matches
testPathIgnorePatterns: /node_modules/ - 44 matches
testRegex:  - 0 matches
Pattern: /Users/carlos/Desktop/portal/src/container/Auth/Login.page.js - 0 matches
npm ERR! code ELIFECYCLE
npm ERR! errno 1
有明显的区别

当我跑的时候

npm运行测试
它使用

cross-env CI=true-react脚本测试——覆盖率

当husky和lint调用npm运行测试时

这是一个叫
cross-env CI=true-react-scripts-test-coverage”/Users/carlos/Desktop/portal/src/container/Auth/Login.page.js“

--covarge

这是我的JSON配置包

"jest": {
    "collectCoverageFrom": [
      "src/**/*.js"
    ],
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 80
      }
    }
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "husky": {
      "hooks": {
        "pre-commit": "lint-staged"
      }
    },
  "lint-staged": {
      "*.js": [
        "prettier --write",
        "eslint src/ --fix",
        "npm run test",
        "git add"
      ]
   }

注意:仅当我使用
预提交:npm run test
时,当我使用lint staged时才会发生这种情况。它工作正常。

Jest正在尝试运行暂存区域上的文件,这就是为什么它会附加一些文件路径

您需要的是
--findRelatedTests

"lint-staged": {
  "*.js": [
    "prettier --write",
    "eslint --ext .js --fix",
    "jest --bail --findRelatedTests"
  ]
}
--findRelatedTests
将查找需要/导入作为参数传递的文件的测试文件(在lint staged的情况下,指暂存区域上的文件)。你可以阅读更多关于它是如何工作的

从:

查找并运行包含以空格分隔的源文件列表(作为参数传入)的测试。用于预提交钩子集成,以运行所需的最少测试量。可以与--coverage一起使用,以包括源文件的测试覆盖率,不需要重复--collectCoverage参数


保释金是如何解决这个问题的?--保释金只是一个我喜欢用在林特身上的便利设施。这使得Jest在一个失败的测试套件之后立即停止,所以您不必等到所有测试都运行之后才能得到反馈。事实上,解决问题的方法是找到最新的测试。我对答案做了解释。很高兴帮助=D@ViníciusPachecoVieira@DanielSousa如果我把
jest--bail--findRelatedTests
放在4个命令列表的末尾,这有什么关系吗?@ypahalajani实际上lint staged现在为您运行“git add”,所以您不再需要它了。我已经更新了上次运行jest的示例。