Тестирование window.name в Jest - PullRequest
0 голосов
/ 07 мая 2018

Я работаю над простым приложением 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();
    });

1 Ответ

0 голосов
/ 07 мая 2018

Оказывается, я дурак и пытался присвоить 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'

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