我使用酶装载测试反应组分(因为我正在测试它的生命周期方法)。我的问题是我的组件有一个redux连接子组件,它给了我错误:
Invariant Violation: Could not find "store" in either the context or props of "Connect(Popup)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(Popup)
我怎样才能解决这个问题?
谢谢!
URI
答案 0 :(得分:1)
如错误所述,您需要为您的组件提供商店。
通过道具传递它:
const wrapper = mount(<PopupContainer store={store} />)
或者将其包装在<Provider>
:
const wrapper = mount(
<Provider store={store}>
<PopupContainer />
</Provider>
)
现在,如果您正在使用Jest并且不希望包装的组件干扰您的测试,您可以模拟它:
jest.mock('./Popup', () => 'Popup');
答案 1 :(得分:0)
不,你不必嘲笑商店。只需提取包装组件:
const WrappedPopup = Popup.WrappedComponent;
使用模拟道具和动作测试它,就像普通组件一样:
const wrapper = mount(<WrappedPopup connectPropA={...} actionB={...} />);
包装组件是一个静态属性,connect
添加到包装器组件以访问原始组件。