Тестирование window.name в Jest

Я работаю над простым приложением React, которое открывает новую вкладку с помощью window.open () для представления «докладчик» только для чтения. Я пишу тест для условного рендеринга в Jest, но не могу правильно изменить window.name. В частности, я тестирую строку, в которой вызывается handleStart ().

Вот тестируемый код:

  componentDidUpdate() {
    localStorage.setItem('timeRemaining', this.state.timeRemaining);
    if (window.name === 'presenter' && this.state.timeRemaining > 0) {
      this.handleStart();
    }
  }

А вот и тест в том виде, в каком он у меня сейчас:

    it('checks the window and state to call #handleStart if started in parent view', () => {
      const spy = jest.spyOn(wrapper.instance(), 'handleStart');
      global.window.name === 'presenter';
      wrapper.setState({ timeRemaining: 100 });
      wrapper.update();
      expect(spy).toHaveBeenCalled();
    });
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
178
1

Ответы 1

Оказывается, я дурак и пытался неправильно присвоить global.window.name. Тест должен читать

    it('checks the window and state to call #handleStart if started in parent view', () => {
      const spy = jest.spyOn(wrapper.instance(), 'handleStart');
      global.window.name = 'presenter';
      wrapper.setState({ timeRemaining: 100 });
      wrapper.update();
      expect(spy).toHaveBeenCalled();
    });

Оставьте этот вопрос заданным, поскольку он здесь уникален и может быть кому-то полезен. Для справки: если вы тестируете объект Window в Jest, вы используете 'global', как показано здесь, вместо 'window'.

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