typescript - 为什么将 jest 升级到 29.5.0 会破坏我的模拟?

标签 typescript jestjs mocking ts-jest

我正在将项目中的 jest 从 27.4.7 升级到 29.5.0,突然我的模块模拟​​不起作用。我尝试阅读the documentation看起来没有任何改变,但它根本不起作用。也许我错过了什么。我在这里找到的所有答案都告诉我要做我一直在做的事情,所以我有点不知所措。

这是一个例子:

mockTest.spec.ts

import { isTestPartnerId } from './utility';

jest.mock('./utility', () => ({
  __esModule: true,
  isTestPartnerId: jest.fn(async (base, context, id) => Promise.resolve(id === 'testPartnerId'))
}));

describe('test mock', () => {

  it('should print true', async () => {
    console.log(await isTestPartnerId(null, null, 'testPartnerId'));
  });
});

看起来应该在控制台上打印“true”,但我得到的是“undefined”。调试测试表明 isTestPartnerId 实际上是未定义的。

我正在将 typescript 与 ts-jest 29.0.5(最新)一起使用。

知道我在这里做错了什么吗?

最佳答案

我找到了答案。线索是这样的:https://stackoverflow.com/a/70270857/662970

就我而言,我们在 package.json 的 jest 配置中有 "restoreMocks": true。删除该行就解决了该问题。

关于typescript - 为什么将 jest 升级到 29.5.0 会破坏我的模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75857967/

相关文章:

python - 仅模拟副作用 X 次

node.js - ts-node-dev 错误选项 : --transpileOnly and bad option: --ignoreWatch

reactjs - 单元测试功能以检查要调用的调度

angular - @select ng-redux 的 Jamine 单元测试错误

javascript - 匹配器错误 : received value must be a mock or spy function

unit-testing - 使用 CLASP 测试 GAS 时如何模拟依赖项

unit-testing - 模拟对象的目的是什么?

c# - 基于接口(interface)的编程的独立示例和详细说明

typescript - 推断出什么类型的 null/undefined?

javascript - 我们如何在 Angular 中获取表单值作为具有多个属性的对象?