首页 > 解决方案 > Jest 无法识别外部打字稿模块

问题描述

我有一些通过 AMD 定义的运行时可导入模块导入。一切都按预期工作,但我无法在测试中模拟任何运行时模块。

没有模拟的错误消息:Cannot find module 'MyModule' from ... 当我尝试使用jest.mock该模块时,我也会收到相同的错误消息。只是错误发生在测试文件中。

// globals.d.ts
declare module 'config' {
    const val: IConfig;
    export default val;
}
// main.ts
/// <reference path="./globals.d.ts" />
import config from 'config';
[...]
// main.spec.ts
import { main } from "./main.ts"
[...]

标签: javascripttypescripttestingjestjs

解决方案


jest.mock预期存在一个被模拟的模块。不存在的模拟模块应标记为虚拟:

jest.mock('MyModule', () => ..., {virtual: true});

推荐阅读