Jest多项目配置下如何共用单个__mocks__文件夹?
让Jest前后端项目共用根目录__mocks__的方案
直接按下面两步操作即可:
- 迁移共用模拟文件到项目根目录
把原来放在backend/src/__mocks__里的通用模拟模块,全部搬到项目根目录下的/__mocks__文件夹中。调整后的项目结构大致如下:
项目根目录 ├── __mocks__ ├── backend ├── frontend ├── node_modules └── jest.config.js
- 修改Jest配置,让各项目识别根目录模拟文件
在每个子项目的配置项里添加modulePaths,指向项目根目录,让Jest把根目录纳入模块搜索路径,从而自动识别根目录下的__mocks__。修改后的jest.config.js示例如下:
export default { projects: [ { displayName: 'Backend', rootDir: './backend', roots: ['<rootDir>/src'], // 指向根目录,让后端测试能找到根下的__mocks__ modulePaths: ['<rootDir>/../'] }, { displayName: 'Frontend', rootDir: './frontend', roots: ['<rootDir>/src'], // 指向根目录,让前端测试能找到根下的__mocks__ modulePaths: ['<rootDir>/../'] } ] };
补充说明
- 如果某个子项目需要专属的模拟模块,依然可以在自身的
src/__mocks__下存放,Jest会优先使用项目内的专属模拟,再加载根目录的通用模拟,优先级不会冲突。 - 配置里的
<rootDir>/../是相对子项目根目录的路径(比如backend的rootDir是./backend,../就对应项目根目录),比硬编码绝对路径更灵活,适配不同运行环境。
内容的提问来源于stack exchange,提问作者MartinP
相关产品推荐
相关产品推荐

