清除手动模拟笑话

6 node.js jestjs

我正在为模块使用手动模拟。我想清除手动模拟中的模拟函数,并为它模拟返回一个新值。我怎样才能做到这一点?我尝试了很多方法,但它总是在手动模拟中返回值。我在 beforeEach 中使用jest.clearAllMocks()and来模拟该函数的新值,但它不会改变。这是我的手动模拟jest.resetAllMocks()mockReturnValue

const firebase = {};
firebase.storage = {
  bucket: jest.fn(),
  upload: jest
    .fn()
    .mockResolvedValue([
      { getSignedUrl: jest.fn().mockResolvedValue(["link"]) }
    ]),
  file: _ => ({
    delete: jest.fn()
  })
};
module.exports = firebase;
Run Code Online (Sandbox Code Playgroud)

我获得了价值,link但我无法在单元测试中模拟其他值

And*_*rle 11

您需要使用其中一个特定的模拟:

有两种方法可以创建 mockFn 实例:

const mockFn = jest.fn()
Run Code Online (Sandbox Code Playgroud)

或通过导入模拟:

import mockFn from 'mockedModule'
jest.mock('mockedModule', ()=> jest.fn())
Run Code Online (Sandbox Code Playgroud)