如何在NestJS中结合tsconfig泛型路径(*)配置Jest的moduleNameMapper?
Jest配置匹配tsconfig多路径映射方案
针对你tsconfig中baseUrl: "src"和paths: { "*": ["domain/*", "*"] }的配置,以下是可行的Jest配置方案:
手动配置moduleNameMapper
在jest.config.js(或jest.config.ts)中添加如下配置:
module.exports = { // 保留你的其他Jest配置 modulePaths: ['<rootDir>/src'], moduleNameMapper: { '^(.*)$': ['<rootDir>/src/domain/$1', '<rootDir>/src/$1'] }, preset: 'ts-jest' // 如果你使用ts-jest };
关键细节
modulePaths对应tsconfig的baseUrl,告诉Jest模块查找的根目录位置moduleNameMapper里的^(.*)$正则会匹配所有导入路径,按照domain/*优先、原路径次之的顺序查找,和tsconfig的路径优先级保持一致
关于ts-jest的pathsToModuleNameMapper无效的问题
如果之前使用这个工具函数没生效,大概率是没正确设置prefix参数,试试这个写法:
const { pathsToModuleNameMapper } = require('ts-jest'); const tsConfig = require('./tsconfig'); module.exports = { modulePaths: [tsConfig.compilerOptions.baseUrl], moduleNameMapper: pathsToModuleNameMapper(tsConfig.compilerOptions.paths, { prefix: '<rootDir>/' }), };
要是仍无效,建议直接用上面的手动配置,兼容性更稳定。
NestJS与Vitest的说明
你记忆正确,当前NestJS官方并未提供Vitest的原生支持,官方推荐的测试框架为Jest,所以继续基于Jest配置路径映射是最优选择。
内容的提问来源于stack exchange,提问作者Daniel Maranhao
相关产品推荐
相关产品推荐

