[英]How to mock out a function in reducer using jest
我有一个减速器,说这样做:
return {
...state,
result: myResult(valA, valB)
}
并且myResult
函数在reducer上方的同一文件中定义
目前,我的测试失败,因为传递给myResult
的值未定义
我如何使用玩笑来嘲笑此功能?
我知道我可以这样做:
const myMock = jest.fn()
myMock.mockReturnValueOnce(10)
但是如何具体告诉测试文件应在主文件中模拟哪个实际功能?
我觉得我想做些类似的事情
import { myResult } from './index'
myResult = jest.fn()
myResult.mockReturnValueOnce(someObject)
但我不确定这样做是否可行,因为测试reducer的方法是先获得一个初始对象,一个预期的对象结果,然后通过一个动作。 而我要测试的功能属于reducer中的结果对象关键字
那有意义吗?
我通常会执行以下操作:
首先,在要求测试的类之前,我先模拟对象:
jest.doMock('dependancy', () => {
return {
doSomething: () => {
return {
set: jest.fn(),
get: jest.fn()
};
}
};
});
然后在执行时,我提取传递给模拟的参数,例如
myObject.myFunction(extension);
expect(dependancy.get).toHaveBeenCalled();
const callback = dependancy.get.mock.calls[0][1];
然后,只需自己执行回调并提取其他任何参数,或将任何其他模拟传递给回调参数。
callback(undefined, undefined);
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.