由于来自业力测试案例的blob和点击事件导致Chrome无头崩溃

时间:2018-03-01 06:15:10

标签: javascript file unit-testing karma-jasmine

这是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配置文件中的任何内容?

0 个答案:

没有答案