在响应项目中使用文件保存程序使用Mocha来测试文件下载,会出现“ ReferenceError:未定义HTMLAnchorElement”错误

问题描述

我正在尝试在react项目中单击一个按钮来测试文件下载,该项目使用npm file-saver https://www.npmjs.com/package/file-saver中的'saveAs'

下载功能如下:

const downloadFile = (csvData) => {
    const dataFile = new Blob([csvData],{
        type: 'text/csv;charset=utf-8;'
    });
    saveAs(
        dataFile,`filename.csv`
    );
};

按钮组件使用此函数作为道具传递给它,称为“ onClick”。 测试如下:


describe('<ExportButton/>',() => {
    let wrapper,props;

    beforeEach(() => {
        props = {
            ...defaultProps,handleOnClick: expect.createSpy(),downloadFile: expect.createSpy().andReturn(() => {})
        };

        wrapper = shallow(<ExportButton {...props} />);
    });

    afterEach(() => {
        expect.restoreSpies();
    });

   
    it('should call the downloadFile and save the file in location specified',(done) => {
        wrapper.find('Button').simulate('click');
        setTimeout(() => {
            expect(props.downloadFile).toHaveBeenCalled();
            done();
        },50);
    });
});

运行测试时会给出

ReferenceError:未定义HTMLAnchorElement
在/node_modules/file-saver/src/FileSaver.js:75:19 在/node_modules/file-saver/dist/FileSaver.min.js:1:106 在对象。 (/node_modules/file-saver/dist/FileSaver.min.js:1:154)......

错误,测试失败。

有人可以告诉我如何解决

预先感谢

解决方法

在测试设置文件中,尝试设置以下内容:

global.HTMLAnchorElement = window.HTMLAnchorElement;