Ваш тест выполняется до загрузки изображения. Изображение загружается в событие load
, но ваша функция loadImage
возвращается до того, как событие было запущено.
Вы можете решить эту проблему, вернув Обещание из loadImage
:
loadImage(file) {
return new Promise((resolve, reject) => {
const myReader: FileReader = new FileReader();
myReader.onloadend = () => {
this.imageInBase64 = myReader.result;
resolve();
};
myReader.readAsDataURL(file);
});
}
А затем дождитесь loadImage
в своем тесте:
it('upload image success', async () => {
const file = new File([new Blob(['123'])], 'abc.png', { type: 'image/png' });
await component.loadImage(file);
expect(component.imageInBase64.length).toBeGreaterThan(0);
});
Возможно, вам также потребуется добавить некоторую обработку ошибок и вызвать reject
при возникновении ошибки. Кроме того, вы можете вернуть myReader.result
из Promise вместо использования переменной-члена.