我正在为模块使用手动模拟。我想清除手动模拟中的模拟功能,然后模拟为其返回新值。我怎样才能做到这一点?我尝试了很多方法,但是它总是在手动模拟中返回值。
我在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
,但是我无法在单元测试中模拟其他值
答案 0 :(得分:0)
您需要使用其中之一作为特定的模拟:
mockFn.mockClear()
:将删除有关调用模拟的所有存储信息mockFn.mockRestore()
:与上述相同,并删除了模拟的返回值mockImplementation
:为模拟设置新的返回值有两种方法可以创建mockFn实例:
#include <commonInterface>
class Example {
private:
int val;
public:
void my_function() {
commonInterface(...);
}
};
或导入一个模拟:
const mockFn = jest.fn()