Jest配置中testMatch选项无法匹配测试文件的问题求助
解决Windows环境下Jest testMatch无法匹配测试文件的问题
问题根源
你的testMatch配置['/**/*.test.(ts|tsx)']会从系统根目录(比如C:\)开始递归查找文件,而非你的项目根目录,这直接导致Jest找不到项目内的测试文件。另外手动转义路径分隔符的做法完全没必要,Jest的glob解析器会自动处理跨平台的路径分隔符差异。
修复方案
修改jest.config.js中的testMatch配置,添加<rootDir>前缀,限定在项目根目录范围内搜索:
module.exports = { preset: 'ts-jest', testEnvironment: 'node', roots: ['<rootDir>'], moduleDirectories: ['node_modules', 'server'], globals: { 'ts-jest': { tsconfig: './tsconfig.test.json', }, }, watchPathIgnorePatterns: ['/node_modules'], moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], // 修复后的testMatch配置 testMatch: ['<rootDir>/**/*.test.(ts|tsx)'], globalSetup: './global-setup.js', };
额外排查项
如果修改后仍无法匹配测试文件,可以检查以下内容:
- 确认测试文件命名严格遵循
xxx.test.ts或xxx.test.tsx格式,无拼写错误 - 执行
jest --listTests命令,查看Jest当前匹配到的测试文件列表,验证路径规则是否生效 - 检查
testPathIgnorePatterns是否意外排除了测试文件所在目录(当前配置仅排除node_modules,无异常)
内容的提问来源于stack exchange,提问作者jait
相关产品推荐
相关产品推荐

