Тестирование реагируемое с помощью библиотеки тестирования реакции - PullRequest
0 голосов
/ 02 марта 2020

Как проверить этот компонент: https://github.com/lovasoa/react-contenteditable? Как имитировать действия пользователя c в тестовой среде? Я пробовал следующее:

// The given element does not have a value setter
fireEvent.change(sourceContent, {
  target: { value: "New content text" }
});

// This doesn't emit onChange Changes text content but onChange is not fired.
fireEvent.change(sourceContent, {
  target: { textContent: "New content text" }
});

// This doesn't emit onChange. Changes inner html but onChange is not fired.
fireEvent.change(sourceContent, {
  target: { innerHTML: "New content text" }
});

Все вышеперечисленное - провальные тесты. Я думал, что если я изменю внутренний HTML, то функция, предусмотренная в onChange, будет запущена. Это пример проекта с этой проблемой: https://codesandbox.io/s/ecstatic-bush-m42hw?fontsize=14&hidenavigation=1&theme=dark

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Невозможно смоделировать события на contenteditable с testing-react-library или любой библиотеке тестирования, которая использует js-dom, из-за ограничения на js-dom.

См. Обсуждение здесь и здесь .

Решением будет использование puppeteer или другого метода, который использует реальный браузер для рендеринга.

0 голосов
/ 02 марта 2020

Похоже, что для тестирования ввода вы должны использовать fireEvent.input. Итак, следующее:

// This doesn't emit onChange. Changes inner html but onChange is not fired.
fireEvent.change(sourceContent, {
  target: { innerHTML: "New content text" }
});

Будет хорошим способом ввода имени пользователя c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...