node.js - node + ts-jest + ESM,jest.mock 什么都不做

标签 node.js typescript jestjs ts-jest

我在 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/

相关文章:

javascript - 缓存静态页面和内容nodejs

javascript - 在浏览器和 Node 之间共享 Tree-shaking TypeScript/JavaScript

typescript - 使用联合类型 "number | string"调用新日期

reactjs - react 原生 jest.preset.js 文件丢失错误

javascript - 期望不正确的智能感知方法

javascript - 使用 Jest、Babel、Webpack 和 React 进行测试。目前尚未启用对实验性语法 'classProperties' 的支持

javascript - React应用程序无法解析获取路由: Unhandled Rejection (SyntaxError): Unexpected token < in JSON at position 0

javascript - 如何将表单数据从 Node 服务器传递到外部服务器?

javascript - Node.js 中的 utf8 重音符号

在 Angular 8 中转换后 CSS 规则被省略