#reactjs
Вопрос:
Я использую react js для создания своего приложения, а также для тестирования Enzyme и Jest. В моем компоненте у меня есть этот эффект использования:
useEffect(() => {
window.addEventListener('beforeunload', () => my
function);
return () => window.removeEventListener('beforeunload', () => my
function);
}, []);
Я хочу протестировать 2 сценария:
- Если компонент был смонтирован , если было добавлено это событие
window.addEventListener('beforeunload'
,
2. Кроме того, если компонент был размонтирован, если событие было удаленоreturn () => window.removeEventListener('beforeunload'
Вопрос: Как протестировать эти 2 сценария? Я просмотрел примеры, но там я не нашел никаких идей. Кто сталкивался с этим?
Комментарии:
1. 1. Если вы не передали ту же функцию
addEventListener
removeEventListener
методам и, прослушиватель событий не будет удален. 2. Вы можете запустить событие и проверить эффект события, например, какое-то сообщение, появляющееся в DOM и т. Д.2. @Юсаф, не могли бы вы показать, пожалуйста? Будет очень полезно.
3. @Yousaf, но как протестировать эти 2 сценария?
Ответ №1:
addEventListener и removeEventListener работают только с одной и той же ссылкой на функцию. Вы должны объявить функцию перед ее использованием.
useEffect(() => {
const myFuntion = () => {...}
window.addEventListener('beforeunload', myFuntion);
return () => window.removeEventListener('beforeunload', myFunction);
}, []);
Вы можете увидеть это в официальной документации: https://reactjs.org/docs/hooks-effect.html#recap
вы можете проверить зарегистрированный прослушиватель событий в chrome devtools следующим образом: https://developers.google.com/web/updates/2015/05/get-and-debug-event-listeners
Комментарии:
1. но как протестировать эти 2 сценария?
2. проверьте эту ссылку для тестирования в chrome : developers.google.com/web/updates/2015/05/…
3. нет ничего, связанного с
how to tes it using enzyme and jest