Angularjs 茉莉花测试文件上传

Angularjs 茉莉花测试文件上传,angularjs,unit-testing,jasmine,karma-jasmine,Angularjs,Unit Testing,Jasmine,Karma Jasmine,我试图通过我的控制器在Angular中测试文件上传功能。我有检查文件大小的逻辑,然后在加载图像时,我想运行额外的逻辑 当我运行测试用例时,我得到一个错误TypeError:未能在“FileReader”上执行“readAsDataURL”:参数1不是“Blob”类型。 我想知道-什么是测试这个的正确方法 我使用的是Jasmine 2.7、Angular 1.6.5、Karma 1.7.0和Karma Jasmine 1.1.0 以下是我的测试用例: it('should do something

我试图通过我的控制器在Angular中测试文件上传功能。我有检查文件大小的逻辑,然后在加载图像时,我想运行额外的逻辑

当我运行测试用例时,我得到一个错误
TypeError:未能在“FileReader”上执行“readAsDataURL”:参数1不是“Blob”类型。

我想知道-什么是测试这个的正确方法

我使用的是Jasmine 2.7、Angular 1.6.5、Karma 1.7.0和Karma Jasmine 1.1.0

以下是我的测试用例:

it('should do something', function() {

    let event = {
        target: {
            files:{
                0:{
                    name: "test.png",
                    size: 20000000,
                    type: "image/png"
                }
            },
        }
    };

    ctrl.processFile(event);
    spyOn(window, 'Image')
    expect(ctrl.fileTooBig).toBeTruthy()
});
以下是它试图测试的控制器代码:

vm.fileTooBig = '';
vm.processFile = function(event) {
    console.log("event", event)

    file = event.target.files[0];
    var reader = new FileReader();
    reader.onload = function(fileEvent) {

        //is the file bigger than 10MB?
        if (fileEvent.total > 10000000) {
             vm.fileTooBig = true;
        }

        var image = new Image();

        image.onload = function(evt) {
               // do something
            }

        };

    };

    reader.readAsDataURL(file);
};

$(document).on("change", "input[type=file]", function(event) {
    vm.processFile(event);
});

到目前为止,你找到解决方案了吗?不,我仍然在这个测试问题上犹豫不决。你找到解决方案了吗?不,我仍然在这个测试问题上犹豫不决