【发布时间】:2021-06-15 22:49:27
【问题描述】:
我正在向使用 compilerOptions.paths 的 TypeScript 项目添加单元测试,并且我需要模拟导入。
我遇到了一个问题,即 jest 无法解析要模拟的模块
FAIL logic/index.test.ts
● Test suite failed to run
Cannot find module '@lib/foo' from 'logic/index.test.ts'
我正在使用ts-jest,它添加了对导入路径的支持,但看起来我需要为模拟做一个额外的步骤
这里解决路径的正确方法是什么?
简化案例
{
"baseUrl": ".",
"compilerOptions": {
"paths": {
"@lib/*": ["lib/*"]
}
}
}
文件系统
* lib
* __mocks__
* foo.ts
* foo.ts
* logic
* index.ts
* index.test.ts
* tsconfig.json
* jest.config.js
// index.ts
import foo from '@lib/foo';
const logic = () => foo();
export default logic;
// index.test.ts
import 'jest';
import logic from '.';
jest.mock('@lib/foo');
// jest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};
【问题讨论】:
-
您的项目是如何设置的?您是否按照指示here? github.com/kulshekhar/ts-jest/issues/1165 建议这个问题在于 Jest 如何处理模拟。
-
@jonrsharpe 啊,可能在玩笑配置中错过了
moduleNameMapper,现在尝试.. -
@jonrsharpe 谢谢,从
moduleNameMapper丢失了'^@lib/(.*)$': '<rootDir>/lib/$1',;如果您发布作为答案,我会接受
标签: typescript unit-testing jestjs ts-jest