在Jest

时间:2018-05-07 18:12:11

标签: reactjs jestjs

我正在开发一个简单的React应用程序,该应用程序已打开一个带有window.open()的新选项卡,用于只读的“演示者”#39;视图。我正在为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 :(得分: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();
    });




保留此问题,因为它在这里看起来很独特,可能对某人有帮助。作为参考,如果你在Jest中测试Window对象,你可以使用&global;' global'如此处所示代替'窗口'