Jest单元测试报错‘No tests found’,寻求解决方案
嗨,咱们来一步步排查你遇到的这个问题。从你给出的错误日志来看,核心问题是:Jest的默认匹配规则(testMatch)找到了3条符合的规则,但最终没匹配到任何测试文件。下面是几个最常见的排查和解决方向:
1. 先检查测试文件的命名&存放位置
Jest默认认两种测试文件:
- 放在
__tests__文件夹下的所有.js/.jsx文件 - 文件名带
.test.js或.spec.js(包括.jsx)的文件,不管放在哪个文件夹
你先核对下自己的测试文件:是不是没放在__tests__里,而且文件名也没带test/spec后缀?比如如果你的测试文件叫utils.js,Jest肯定找不到它,得改成utils.test.js或者移到__tests__文件夹里才行。
2. 直接指定测试文件路径跑测试
如果不确定是不是命名的问题,可以先直接指定测试文件路径来运行,验证Jest能不能识别到它:
yarn test ./你的测试文件路径/xxx.test.js
如果这样能正常跑通,那就是默认的匹配规则没覆盖到你的文件,接下来可以自定义配置。
3. 在package.json里自定义Jest匹配规则
如果你的测试文件的命名/位置比较特殊(比如都放在tests文件夹里,后缀是.spec.js),可以在package.json里添加Jest配置,修改testMatch来适配你的文件:
{ "jest": { "testMatch": [ "**/tests/**/*.spec.js?(x)", "**/?(*.)(spec|test).js?(x)" ] } }
修改完之后再运行yarn test试试。
4. 排查是否误排除了测试文件
错误日志里显示testPathIgnorePatterns: \\node_modules\\ - 4 matches,这个是正常的——Jest默认会排除node_modules文件夹。但如果你之前在配置里加了其他排除规则,导致测试文件被误排除了,也会出现这个错误。你可以检查下package.json里的Jest配置有没有额外的testPathIgnorePatterns项。
5. 适配Windows系统的路径问题
你用的是Windows 7,有时候路径分隔符(\和/)可能会影响Jest的匹配。可以试试把测试文件的路径用相对路径写,或者在Jest配置里把路径规则写成兼容Windows的格式(比如用双反斜杠或者正斜杠)。
另外,你当前的Node版本是v8.6,建议安装适配这个版本的Jest版本(比如Jest 24.x系列,它支持Node 8),可以运行下面的命令升级:
yarn add jest@24 --dev
你可以先从第一步开始排查,这是最常见的原因~
内容的提问来源于stack exchange,提问作者Deen John

