如何 jest.mock 导入 ES6 模块?

How to jest.mock an ES6 module import?

我已经将大量辅助方法移动到 npm 发布的库中,但其中一些在单元测试中被模拟,我不知道如何模拟新的导入。

在我的代码中,我能够像这样成功重构 .tsx 文件:

发件人:

import { doSomething } from "../../utils/stringUtils";

收件人:

import { Utils } from "@mine/my-lovely-libary";
const { doSomething } = Utils;

但是在 spec.tsx 的单元测试中,我无法让模拟工作:

jest.mock("../../utils/stringUtils", () => ({
    ...jest.requireActual("../../utils/stringUtils"),
    doSomething: (date: string) => date.toString(),
}));

我想做这样的事情:

import { Utils } from "@mine/my-lovely-libary";
const { doSomething } = Utils;
jest.mock(doSomething);

你试过这样模拟吗

jest.mock('@mine/my-lovely-libary', () => ({
    doSomething: () => doSomethingMock,
}));

这里的 doSomething 是来自您的 npm 库的方法

doSomethingMock 可以是 jest.fn() 或类似这样的 const doSomethingMock = 'mockTestValue'