这是2年前提出的重复问题,但我仍然从潘多拉盒子里拿出这个问题没有答案:
How to mock Blob and Click() in jasmine Specs in angular js?
此处存在类似的功能:
function saveFile(data, fileName) {
let url = URL.createObjectURL(new Blob([data]));
let a = document.createElement('a');
a.href = url;
a.download = fileName;
a.target = '_blank';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
我对单元测试代码的尝试如下:
describe('UtilityService', function () {
let UtilityService;
let URL;
let Blob;
beforeEach(inject(function (_UtilityService_) {
UtilityService = _UtilityService_;
Blob = function (dataArray) {
return dataArray;
};
URL = {
createObjectURL: function (blobData) {
return Blob(blobData);
}
};
spyOn(URL.createObjectURL).and.returnValue([201]);
spyOn(document, 'createElement').and.callFake(function () {
return {
href: '',
target: '_blank',
download: ''
};
});
spyOn(document, 'body').and.returnValue('');
}));
来电者功能:
fdescribe('saveFile', function () {
it('should save the file', function () {
UtilityService.saveFile(null, null);
});
});
没有运气,ChromeHeadless正在崩溃。这是什么原因以及如何摆脱这个?我们是否需要更改karma配置文件中的任何内容?