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 Functions和fn.apply。
如果要测试整个类的行为,则可以将要测试的实例设置为使
this.view.current.zoomOut
为mockZoomOut
。关于javascript - 如何在Jest中模拟此方法链?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51922895/