zoomOut(callback) {
        // Zooms out the current screen
        this.view.current.zoomOut(300).done(() => {
            (hasCallback(callback)) && callback();
        });
    }


我正在尝试测试上述功能,但始终收到以下错误:


  TypeError:this.view.current.zoomOut(...)。done不是函数


如何在Jest中模拟此方法链?

最佳答案

您可以尝试以下方法:

const mockZoomOut = jest.fn(() => ({ done(cb) { cb(); } }));
const mockThis = {
    view: {
        current: {
            zoomOut: mockZoomOut,
        },
    },
};

test('it does', () => {
    const cb = jest.fn();
    zoomOut.apply(mockThis, [cb]);
    expect(mockZoomOut).toHaveBeenCalledTimes(1);
    expect(cb).toHaveBeenCalledTimes(1);
});


请参见Jest Mock Functionsfn.apply

如果要测试整个类的行为,则可以将要测试的实例设置为使this.view.current.zoomOutmockZoomOut

关于javascript - 如何在Jest中模拟此方法链?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51922895/

10-11 23:53