Как добавить модульный тест для события нажатия клавиши окна в ReactJS с помощью фермента

В моем компоненте React есть следующий код. При нажатии клавиши выхода должна быть вызвана функция расфокусировки. Как это проверить? Я использую шутку и энзим.

Как добавить модульный тест для события нажатия клавиши окна в ReactJS с помощью фермента

Спасибо за помощь

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
1 332
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для большего контроля над тестированием я бы рекомендовал передать логику событий mousedown как функцию prop.

Затем, после того, как вы смонтируете компонент в своих спецификациях, вы можете протестировать как -

test('should toggle focus', () => {
  const map = {};
  window.addEventListener = jest.genMockFn().mockImpl((event, cb) => {
    map[event] = cb;
  });

  const component = mount(<SomeComponent />);
  map.keyDown({ keyCode: 27 });
  expect(props.unfocus).to.have.been.called;
});

Полезные ссылки --

Имитация события KeyDown

Имитация событий в окне

но функция window.simulate не будет доступна, поскольку окно не является реагирующим компонентом.

jintoppy 07.05.2018 08:55

Другие вопросы по теме