使用异步组件测试React Router重定向

时间:2018-12-04 18:40:49

标签: reactjs react-router enzyme

tl / dr:如何等待异步componentDidMount,模拟React Router重定向并测试结果页面?

我有一个带有componentDidMount的React组件,该组件从API异步请求数据然后设置状态。

在酶/摩卡测试中,我可以像这样等待componentDidMount

  it('should show an input with quantity 0 by default', async () => {
    const component = shallow(<ShowPage />);
    await component.instance().componentDidMount();
    component.update();
    expect(component.find('h1').text()).to.eq('Show page');
  });

这很好,但我还想测试单击按钮的操作,该按钮会将用户重定向到另一个页面。它使用:

this.props.history.push('/redirect-to')

除非将组件包装在history中,否则MemoryRouter道具不可用:

const component = mount(<MemoryRouter><ShowPage /></MemoryRouter>);

但是现在我无法访问ShowPage组件的componentDidMount,因为:

await component.find('BurgerShow').instance().componentDidMount();

得到我:

instance() can only be called on the root

我觉得我的天气很恶劣。这里正确的方法是什么?

0 个答案:

没有答案