我正在为模块使用手动模拟。我想清除手动模拟中的模拟功能,然后模拟为其返回新值。我怎样才能做到这一点?我尝试了很多方法,但是它总是在手动模拟中返回值。我在beforeEach中使用jest.clearAllMocks()
和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;
我得到了价值,link
但是我无法在单元测试中嘲笑其他价值
您需要使用其中之一来模拟:
mockFn.mockClear()
:将删除有关调用模拟的所有存储信息mockFn.mockRestore()
:与上述相同,并删除模拟的返回值mockImplementation
:为模拟设置新的返回值可以通过两种方法来创建mockFn实例:
const mockFn = jest.fn()
或通过导入模拟:
import mockFn from 'mockedModule'
jest.mock('mockedModule', ()=> jest.fn())
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句