Jest如何配置testMatch匹配所有*.test.{ts|tsx}并排除data.test相关文件
解决方案
Jest 支持在匹配规则中使用!开头的否定规则排除指定文件,你可以直接在现有testMatch配置中追加排除规则即可,调整后的完整配置如下:
"testMatch": [ "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}", "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}", "!<rootDir>/src/**/data.test.{ts,tsx}" ]
规则说明
- 以
!开头的规则为排除规则,Jest 会按顺序执行所有匹配规则,先命中包含规则的文件如果命中后续的排除规则,会被从测试列表中移除 - 上述第三条规则会排除项目src目录下所有层级中命名为
data.test.ts或data.test.tsx的文件
如果你不需要匹配.spec后缀、以及.js/.jsx后缀的测试文件,只需要保留*.test.{ts|tsx}的匹配规则,可以进一步精简配置:
"testMatch": [ "<rootDir>/src/**/__tests__/**/*.test.{ts,tsx}", "<rootDir>/src/**/*.test.{ts,tsx}", "!<rootDir>/src/**/data.test.{ts,tsx}" ]
备选方案:使用testPathIgnorePatterns配置
如果你不想修改原有testMatch规则,也可以单独新增testPathIgnorePatterns配置项实现排除效果:
"testPathIgnorePatterns": [ "/data\\.test\\.(ts|tsx)$" ]
内容的提问来源于stack exchange,提问作者vdj4y
相关产品推荐
相关产品推荐

