在Jest中手动模拟导出的ES模块

时间:2020-03-17 13:19:40

标签: typescript jestjs

我有一个看起来像这样的文件

// ./someFile.ts

import { someModule as metric } from 'somePackage';

const someOtherStuff = ...

export { metric, someOtherStuff };

在测试中,我可以像这样成功地在metric上模拟一个函数

import { metric } from '@common/someFile';
metric.increment = jest.fn().mockImplementation(() => null);

几乎在每种情况下,我都将使用此精确模拟,所以我尝试了手动模拟

// ./__mocks__/someFile.ts
const metric = { increment = jest.fn().mockImplementation(() => null); };
export { metric };

但是,这似乎无法自动运行。

每次测试都需要打电话给jest.mock('./someFile');吗?开玩笑的文档对此感到困惑(似乎建议仅对于核心Node模块才需要这样做)。当您清除开玩笑的模拟游戏时,还会清除手动模拟游戏吗?

在我的原始模块中,someOtherStuff在这里发生了什么?如果我想保持原样,我是否需要将其导入,然后在模拟中重新导出?

0 个答案:

没有答案