我正在将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'
我应该如何测试然后对门户网站做出反应以使此测试正常进行?
答案 0 :(得分:1)
尝试将其放入测试中:
beforeAll(() => {
ReactDOM.createPortal = jest.fn((element, node) => {
return element
})
});