#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
? Показать код