我在 nodejs
上使用带有 ESM 导入的 ts-jest
。
问题是我的 jest.mock
不工作,它不是模拟。
import { jest } from "@jest/globals";
jest.mock("./helpers"); // I tried before or after import
import { fn } from "./helpers";
describe("SimpleTest", () => {
it("should work", () => {
console.log(fn); // => defined
console.log(fn.mockReturnValue); // => /!\ UNDEFINED, fn is not a jest mock.
});
});
我的 Jest 配置:
export default {
preset: "ts-jest/presets/default-esm",
extensionsToTreatAsEsm: [".ts"],
globals: {
"ts-jest": {
useESM: true,
},
},
}
我使用的命令:
node --experimental-vm-modules --experimental-specifier-resolution=node $(yarn bin jest)
我正在使用 Node v16.13.2
和 ts-jest 27.1.3
最佳答案
jest.mock
适用于 CJS,但不适用于 ESM。
有一个 jest.unstable_mockModule
和一个开放的 PR 可以将它变成一个稳定的 API,但它处于不确定状态(Jest 作者失去了动力)。
更多详情:
问题中的一些有值(value)的评论可能会帮助您找到部分解决方案。
它对我不起作用。我放弃了它,完全走了另一条路。
关于node.js - node + ts-jest + ESM,jest.mock 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70999696/