Как протестировать onload с помощью jest и библиотеки тестирования во время fireEvent?

#javascript #reactjs #jestjs #react-testing-library

#javascript #reactjs #jestjs #react-testing-library

Вопрос:

У меня есть такая функция, которая проверяет изображение и возвращает обещание

 export default function checkAspectRatio(value) {
  return new Promise(resolve => {
    let reader = new FileReader();
    reader.readAsDataURL(value);
    reader.onload = function(value) {
      let img = new Image();
      img.src = value.target.result;
      img.onload = function() {
        const aspectRatio = this.width / this.height;
        resolve(aspectRatio);
      };
    };
  });
}
 

и вызовите его внутри onChange типа ввода =»file»

 //..
Object.defineProperty(file, 'aspectRatio', {
  value: await checkAspectRatio(file)
});
//..
 

Однако, используя приведенный ниже тест, кажется, что обещание не разрешается внутри функции onload и приводит к ошибке в тесте, поскольку он не может найти текст в документе

 it('should choose file and validate the file', async () => {
    //...
    const inputFile = getByLabelText('input-button-upload');
    const mockImage = new File(['png'], 'test.png', {
      type: 'image/png',
    });
    fireEvent.change(inputFile, {
        target: {
        files: [mockImage]
        }
    });
    expect(await inputFile.files[0]).toBe(mockImage);
    expect(getByText('test.png')).toBeInTheDocument();
}
 

Как я могу правильно это протестировать?

Комментарии:

1. Что такое file ? Показать код