Я пытаюсь написать контрольный пример для моего приложения реакции.
Тестовый пример: кнопка «Сохранить» должна быть включена при загрузке файла.
Тестовый пример работает нормально. Однако fireEvent дважды запускает событие изменения.
Кто-нибудь сталкивался с этой проблемой раньше? Есть ли возможное решение?
test('Toggle save button disable on file upload', async () => {
store.dispatch(setSurveyData(LoadStatus.SUCCESS, survey));
const { container, getByText } = renderWithRedux(
<BulkOptions
questionId={question.id}
options={question.options}
onClose={setState}
/>
);
const uploadBtn: HTMLButtonElement = (await getByText(
'Upload'
)) as HTMLButtonElement;
const fileInput: HTMLInputElement = uploadBtn.querySelector('input');
const saveButton: HTMLButtonElement = (await getByText(
'Save'
)) as HTMLButtonElement;
expect(saveButton.hasAttribute('disabled')).toBe(true);
fileInput.onchange = e => {
console.log(e);
};
fireEvent.change(fileInput, {
target: {
files: [
new File(['option 11'], 'test.csv', {
type: 'text/csv'
})
]
}
});
await waitForDomChange({ container })
.then(() => {})
.catch(err => console.log(`Error you need to deal with: ${err}`));
console.log(
container.querySelectorAll('textarea').length,
container.querySelector('textarea').value
);
expect(saveButton.hasAttribute('disabled')).toBe(false);
});