繁体   English   中英

如何使用Jest模拟出reducer中的功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM