我试图测试我的React组件并得到以下错误 .
不变违规:无法在“Connect()”的上下文或道具中找到“store” . 将根组件包装在<Provider>中,或者显式地将“store”作为prop传递给“Connect()” .
在测试中渲染Component时出错 .
beforeEach(() => {
Component = TestUtils.renderIntoDocument(<SideMenu />);
});
在页面上呈现Component时,它工作正常 . 但是在测试中,我无法将存储明确地传递给Component .
有人能指出正确的方向吗?
3 回答
connect
是react-redux
提供的装饰器 . 对redux的组件connect
是一个智能组件,并期望存储可以通过prop
或通过Provider
显示错误消息 .在测试智能组件时,您可以提供模拟商店作为
prop
. 但是,当行中有另一个子组件,谁希望store
时,prop
方式将不起作用 .这是一种将
store
提供给import
是订阅store
的子组件的组件的方法 .要回答这个问题(我遇到了这个并且接受的答案不是我需要的),请创建一个新方法,如:
然后,为了连接,使用:
看这里:https://github.com/reactjs/react-redux/issues/390#issuecomment-221389608
在大多数情况下,我发现在测试中导入组件本身对我来说很好 .
SideMenu.js:
SideMenu.spec.js:
注意:正如Салман所指出的那样,当有另一个子组件下线时,这种方法将不起作用,谁期望
store
.