"No tests found" when 运行 从命令行开玩笑

"No tests found" when running jest from command line

在使用 create-react-app 构建的 React 项目中,测试文件位于他们需要测试的代码旁边的同一文件夹中,如下所示:

|- /src/path
|  |- List.tsx
|  |- List.test.tsx

尝试 运行 npx jest 或使用全局 jest 时,我得到以下结果:

No tests found
In C:\src\path
  34 files checked.
  testMatch: **\*test.tsx,**/*test.tsx,src\**\*.test.tsx,src/**/*.test.tsx,C:\src\path\src\**\*.test.tsx,C:\src\path\src\**\*.test.tsx - 0 matches
  testPathIgnorePatterns: \node_modules\ - 34 matches
Pattern:  - 0 matches

运行 npm test - 反过来 运行 来自 package.json 的脚本 react-scripts test - 工作正常并且能够找到 运行 项目中的所有测试(watch模式下)。

知道如何解决这个问题吗?

环境

jest.config.js

module.exports = {
  testMatch: [
    '**\*test.tsx',
    '**/*test.tsx',
    'src\**\*.test.tsx',
    'src/**/*.test.tsx',
    '<rootDir>\src\**\*.test.tsx',
    '<rootDir>/src/**/*.test.tsx',
    'src/.*|(.|/)(.test).tsx?$'
  ],
};

您尝试过使用 / 作为目录分隔符吗?

来自Jest docs

See the micromatch package for details of the patterns you can specify.

来自Micromatch docs

Micromatch exclusively and explicitly reserves backslashes for escaping characters in a glob pattern, even on windows. This is consistent with bash behavior.

...

In other words, since \ is reserved as an escape character in globs, on windows path.join('foo', '*') would result in foo\*, which tells micromatch to match * as a literal character. This is the same behavior as bash.

所以我会尝试:

module.exports = {
  testMatch: [ '**/*.test.tsx' ]
};

根据 ,使用 create-react-app 构建的项目并不意味着直接使用 jest 进行测试。

应使用

react-scripts test 而不是 jest 以利用 CRA 设置生成的 Jest 配置。