使用Jest和React-Router测试路由更改

时间:2020-01-03 15:35:26

标签: reactjs react-router jestjs enzyme

我正在使用包装器组件进行测试,并且我想测试路由更改,因此在包装器中包含了MemoryRouter,但是当我尝试使用instance().history时,对象是undefined。但是,当我将内存路由器从包装器组件中取出时,它工作正常。

class TestContainer extends React.Component{
  render () {
    const { children } = this.props;
    return (
      <MemoryRouter keyLength={0}>
        {children}
      </MemoryRouter>
    )
  }
}

我的测试

describe('test', () => {
  test('test route', () => {
    let wrapper = mount(
        <TestContainer>
          <MyComponent />
        </TestContainer>
      );

    console.log(wrapper.instance().history) // prints undefined
  });

  test('test route', () => {
    let wrapper = mount(
        <MemoryRouter keyLength={0}>
          <MyComponent />
        </MemoryRouter>
      );

    console.log(wrapper.instance().history) // prints history object
  });
})

为什么这样工作?

0 个答案:

没有答案