typescript - Jest mockImplementationOnce 不覆盖手动模拟

标签 typescript mocking jestjs

我在 __mocks__ 中有一个手动模拟文件夹,名为 client.ts .现在在我的单元测试中,我调用 jest.mock('./client') .这工作正常,并开 Jest 导入了模拟文件夹。现在我有一个需要覆盖此行为的场景(测试)。我用了mockImplementationOnce在单元测试中。

import mockClient from './client';
(mockClient.getObject as jest.Mock).mockImplementationOnce(() => {
  console.log('calling the mock of the mock');
  return Promise.resolve('abcde');
});

现在当我运行这个测试时,Jest 似乎仍然在 __mocks__ 中加载手动模拟。文件夹而不是为此特定测试加载此模拟。我在这里错过了什么吗?

最佳答案

这应该有效:

import mockClient from './client';

test('getObject', async () => {
   mockClient.getObject.mockImplementationOnce(() => {
     console.log('calling the mock of the mock');
     return Promise.resolve('abcde');
   });

   await mockClient.getObject();
})

我认为使用 mockImplementationOnce 是一个好习惯就在调用之前,以避免在 beforeEach 中的任何覆盖或任何其他冲突。

关于typescript - Jest mockImplementationOnce 不覆盖手动模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58129020/

相关文章:

typescript :将泛型类传递给函数参数

javascript - 在 GraphQL 中搜索具有特定字符串的特定结果

unit-testing - 模拟 Entity Framework 上下文

swift - 在 Swift 中模拟 String 类方法

Reactjs、jest、enzyme、react-universal-component - 如何使用动态导入测试组件结构?

javascript - 快照时间戳不匹配

reactjs - 我的 react 组件工作正常,但 Jest 测试失败

angular - 类型 'Observable<>' 缺少类型 'Observable<>' : [see below] (error TS2322) 的以下属性

node.js - 如何改善我对此 promise 链的错误处理?

c# - 使用 C# 类中的填充值生成模拟 XML 的工具