node环境下ts-jest使用jest.spyOn出现TS2769重载不匹配问题求助
Jest + ts-jest 单元测试TS2769错误解决方案
按以下优先级排查解决:
- 修正拼写错误:示例代码中存在多处拼写不匹配问题,业务代码
consumer.ts中将dependency误写为dependecy,测试代码中将jest.spyOn的第二个参数误写为depenedncy,拼写错误会导致TypeScript无法在导入对象上找到对应方法,修正所有拼写不一致的问题即可。 - 对齐导入路径与导出结构:你示例中
consumer.ts的注释标注从index.ts导入dependency,如果你的项目中impl是一个文件夹,内部包含impl.ts和作为桶导出的index.ts,导入路径../impl会优先匹配同级的impl.ts文件,而非impl目录下的index.ts。可将导入路径补全为../impl/index,或者调整文件命名避免文件与目录重名导致的解析优先级冲突。 - 手动补充类型断言:如果确认拼写、路径均无问题,可通过类型断言修正ts-jest的类型推断误差,写法参考:
// 精准断言避免类型丢失 const mockDependency = jest.spyOn(dependencies as Record<'dependency', typeof dependencies.dependency>, 'dependency'); // 临时绕开类型检查(不推荐,仅用于快速验证) const mockDependency = jest.spyOn(dependencies as any, 'dependency');
- 校验配置匹配性:确认
tsconfig.json中开启了esModuleInterop: true,同时jest.config.js中ts-jest的useESM配置与项目的模块类型匹配:CommonJS模块项目关闭该配置,ESM模块项目开启该配置。
内容的提问来源于stack exchange,提问作者bjenner
相关产品推荐
相关产品推荐

