2017-06-21 58 views
0

我有如下一些代码:如何使用玩笑来测试文件下载?

/* global document */ 
/* global window */ 
/* global Blob */ 

import FileSaver from 'file-saver'; 

export const createDownloadFromBlob = (blob, filename, extension) => { 
    FileSaver.saveAs(blob, `${filename}.${extension}`); 
}; 

export const createDownload = (content, filename, extension) => { 
    createDownloadFromBlob(new Blob([content], { type: 'application/octet-stream' }), filename, extension); 
}; 

我想用玩笑来单元测试这两种方法,但我不知道从哪里开始。任何帮助,将不胜感激。

回答

1

我会模拟出FileSaver有间谍:

import FileSaver from 'file-saver'; 
jest.mock('file-saver',()=>({saveAs: jest.fn()})) 

正如你不能比较BLOB我会嘲笑这还有:

global.Blob = function (content, options){return ({content, options})} 

现在你可以运行测试,并使用期望这样

createDownload('content', 'filename', 'extension') 
expect(FileSaver.saveAs).toHaveBeenCalledWith(
    {content:'content', options: { type: 'application/octet-stream' }}, 
    'filename.extension' 
) 
+0

感谢您的帮助! – zhuhan