#click #jsdom #testing-library #user-event
Вопрос:
Контекст: Я использую библиотеку тестирования и пытаюсь понять некоторые из основных механизмов.
Поскольку JSDOM уже обеспечивает обработку события «щелчок», мне было интересно:
- Есть ли разница между этими двумя способами управления событием?
- Если нет, то почему fireEvent переопределяет это событие?
Если есть различия, я хотел бы понять, в чем они заключаются и когда следует использовать тот или иной инструмент.
(По второму вопросу у меня есть идея, но я хочу подтвердить: fireEvent предоставляет глобальный и унифицированный интерфейс для генерации событий. И щелчок-естественная его часть.)
Комментарии:
1. Переполнение стека-это решение проблем. Пожалуйста, будьте более конкретны в чем проблема
Ответ №1:
HTMLElement.click
запускает событие щелчка
fireEvent.click
запускает событие щелчка со свойствами события по вашему выбору (например detail: 2
)
Прямо из документов:
Примечание
В большинстве проектов есть несколько вариантов использования fireEvent, но в большинстве случаев вам, вероятно, следует использовать @testing-library/user-event.
userEvent.click
запускает все события, которые должны произойти в браузере , если пользователь нажимает на элемент ( hover
pointerdown
, и т.д.)
Комментарии:
1. С вашим ответом я понимаю, что
HTMLElement.click
(управляемый JSDOM) иfireEvent.click
(без указания каких-либо конкретных свойств события) похожи. Это правильно?2. Примерно, да. Он также обертывает отправленное событие, если вы используете одну из библиотек, специфичных для платформы. Например
act()
, если вы используете@testing-library/react
3. О! Да! Он оборачивает события с.
act()
Спасибо, хорошая мысль.
Ответ №2:
Твоя догадка верна. Они даже говорят об этом в своих документах. Это просто «Удобные методы для запуска событий DOM». Вы можете увидеть полную карту событий (нажмите также) здесь: https://github.com/testing-library/dom-testing-library/blob/master/src/event-map.js