在一种方法中,我正在使用FileReader
来读取文件。我想一旦文件异步加载,FileReader
就会触发load
事件。
handleFileSelect(files:ArrayLike<File>){
...
reader.onload = this.handleReaderLoaded;
reader.readAsDataURL(file);
}
}
我想测试是否调用了handleReaderLoaded
,但无法在Jasmine
中编写规范。
到目前为止我写的规范是
fit('should create a thumbnail of the image file selected', () => {
let newPracticeQuestionComponent = component;
let file1 = new File(["foo1"], "foo1.txt");//create file
spyOn(newPracticeQuestionComponent,'handleReaderLoaded')//this is the load event handler
newPracticeQuestionComponent.handleFileSelect([file1]);//handleFileSelect will create FileReader and will also start file load operation
expect(newPracticeQuestionComponent.handleReaderLoaded).toHaveBeenCalled();
});
该规范失败,原因为Expected spy handleReaderLoaded to have been called.
。我猜是因为文件加载是异步的并且规范在加载事件触发之前完成而发生错误。如何使规范等待load
事件被触发。
答案 0 :(得分:0)
正确的方法似乎是使用done
的{{1}}方法,它可能会指示JAsmine
等待
Jasmine