Я пытаюсь протестировать отправку формы React программно, используя Jest и ReactDOM.
Ниже приведен фрагмент кода теста:
var mycomp = <MyForm />;
var container = document.createElement('div');
ReactDOM.render(mycomp, container);
container.querySelector('#Project').value = "Test Project";
container.querySelector('#Description').innerHTML= "Test description";
// Submit the form
// (See: https://github.com/facebook/react/issues/6796#issuecomment-288350025)
container.querySelector('form').dispatchEvent(new Event('submit'));
expect(container.querySelector('#successMessage')).not.toBeNull(); // this fails!
В обработчике функции отправки я обновляю состояние, которое, в свою очередь, после повторного рендеринга должно добавить элемент spanимея "successMessage" в качестве идентификатора.
К сожалению, обработчик отправки запущен (я вижу его журналы на консоли), но диапазон сообщений об успехе не отображается.
Почему это происходит?Разве обновления в компонентах React, визуализированных с помощью ReactDOM, не должны запускать новый рендеринг и обновлять страницу?
EDIT : см. Минимальное воспроизведение проблемы здесь (неудачный тест Jest находится навнизу, закомментировано) https://codepen.io/pviotti/pen/YdKKpw