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




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