1
我試圖用笑話來模擬自定義函數,但是我遇到了問題。如何用笑話模擬回調函數
這是我的函數:
export const resizeImage = (file, fileName, callback) => {
const MAX_WIDTH = avatarImage.maxWidth;
const MAX_HEIGHT = avatarImage.maxHeight;
const img = document.createElement('img');
img.src = window.URL.createObjectURL(file);
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
img.onload =() => {
const sizes = internalResizeImage(img, MAX_WIDTH, MAX_HEIGHT);
canvas.width = sizes.width;
canvas.height = sizes.height;
ctx.drawImage(img, 0, 0, sizes.width, sizes.height);
return callback(dataURItoFile(canvas.toDataURL(), fileName));
};
};
我叫這樣的:
resizeImage(acceptedFiles[0], this.props.user.id, (res) => {
//dostuff
});
在我的測試,我嘲笑這樣的:
let mockResizeImage = jest.fn();
jest.mock('../../utilities/imageUtils',() => ({
resizeImage:() => mockResizeImage
}));
我想mockResizeImage到作爲回調,然後在我的測試中更改返回值:
it('should call handleDrop and accept files',() => {
//mockResizeImage.mockReturnValue('something');
const instance = shallow(mockComponent()).instance();
const acceptFilesMock = ['test'];
instance.handleDrop(acceptFilesMock);
expect(clickSpy).toHaveBeenCalledTimes(1);
});
如果這是一個承諾,所有的好,但它是一個回調,我不知道我做錯了什麼。
謝謝。
非常感謝Andreas!它的工作原理,但我不知道如何測試resizeImage導入。我必須添加蜘蛛嗎?謝謝 –
你是什麼意思「測試'resizeImage'」?測試'resizeImage'是否被調用了正確的參數? –
是的,我現在這樣做了:'''expect(resizeImage).toHaveBeenCalledTimes(1);''' –