Звучит странно, но я хочу создать File
объект, который FileReader
не загружается.Позвольте мне объяснить.
У меня есть функция, которая создает FileReader.В этой функции я также устанавливаю обработчики событий load
и error
handleFileSelect(files:ArrayLike<File>){
...
let reader:FileReader = new FileReader();
reader.onload = this.handleReaderLoaded;
reader.onerror = this.handleReaderError;
reader.readAsDataURL(file);
}
} Я хочу провести модульное тестирование, чтобы handleFileSelect
правильно устанавливал обработчик ошибок и чтобы обработчик ошибок (handleReaderError
) вызывается, если FileReader
не удается.Но я не могу понять, как заставить FileReader
терпеть неудачу.
Один мысленный процесс, который я имею в виду, состоит в том, чтобы каким-то образом создать File
, который не загружается, но я также не могу этого сделать
Спецификация, которую я написал до сих пор,
fit('should call error handler when file doesn\'t get loaded successfully', (done) => {
let newPracticeQuestionComponent = component;
let file1 = new File(["foo1"], "foo1.txt");
/*
File reader will load the file asynchronously.
The `done` method of `Jasmine` makes `Jasmine` wait
When handleReaderError is called, call a fake function and within it call done
*/
spyOn(newPracticeQuestionComponent,'handleReaderError').and.callFake(function(event:FileReaderProgressEvent){
console.log("called fake implementation of handleReaderError ",event);
expect(event.type).toEqual("abort");
done();
});
newPracticeQuestionComponent.handleFileSelect([file1]);
//I SHOULD SIMULATE FILEREADER ERROR HERE BUT HOW??
});