问题描述
我正在尝试在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;