开玩笑-在React中测试模态会出错

时间:2019-05-22 13:27:54

标签: reactjs jestjs react-test-renderer

我正在将react-test-renderer与Jest一起用于测试反应组件。但是,如果我像这样测试react-mui模态对话框:

describe('Dashboard', function () {
  let dashboard;
  beforeEach(async () => {
    testRenderer = TestRenderer.create(<MemoryRouter><Route component={Dashboard} /></MemoryRouter>);
    dashboard = testRenderer.root.findByType(Dashboard);
    await waitForExpect(() => expect(dashboard.instance.state.hasLoaded).toBeTruthy());
  });


  it('opens dialog on clicking the new class', async () => {
    const button = testRenderer.root.findByType(Button);
    expect(dashboard.instance.state.showDialog).toBeFalsy();
    button.props.onClick();
    expect(dashboard.instance.state.showDialog).toBeTruthy();
  });
});

但是,然后我得到一个错误:

  

错误:失败:“错误:未捕获'警告:无效的容器具有   已提供。这可能表明正在使用其他渲染器   除了测试渲染器。 (例如,ReactDOM.createPortal   在ReactTestRenderer树中。)不支持此操作。%s'

我应该如何测试然后对门户网站做出反应以使此测试正常进行?

1 个答案:

答案 0 :(得分:1)

尝试将其放入测试中:

beforeAll(() => {
    ReactDOM.createPortal = jest.fn((element, node) => {
        return element
    })
});