我正在为模块使用手动模拟。我想清除手动模拟中的模拟函数,并为它模拟返回一个新值。我怎样才能做到这一点?我尝试了很多方法,但它总是在手动模拟中返回值。我在 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.mockClear(): 将删除有关调用模拟的所有存储信息mockFn.mockRestore(): 同上加上删除模拟的返回值mockImplementation: 为模拟设置一个新的返回值有两种方法可以创建 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)