javascript - 如何使用 React 和 Redux 测试带有嵌套容器的组件?

标签 javascript reactjs mocha.js redux jsdom

由于我正在处理的应用程序的复杂性,我决定使用嵌套的 redux 容器,而不是将操作作为 prop 向下传递给子组件。然而,这已被证明在渲染 OuterContainer 时对单元测试有问题。与 jsdom结合 mocha , chaisinon .

这是 View 结构的人为示例:

<OuterContainer>
  <div>
    <InnerContainer />
  </div>
</OuterContainer>

哪里OuterContainer & InnerContainer用连接包裹。例如:

export connect(<mapStateToProps>)(<Component>)

运行测试时,我得到的错误是: Invariant Violation: Could not find "store" in either the context or props of "Connect(Component)". Either wrap the root component in a `<Provider>`, or explicitly pass "store" as a prop to "Connect(Component)".

有没有办法解包或 stub InnerContainer无需使用浅层渲染即可进行单元测试?

最佳答案

将您的组件包装在 <Provider> 中测试时。由您决定是提供真实商店还是模拟 { dispatch, getState, subscribe }给它。将最外层组件包裹在 <Provider store={store}> 中还将使商店可供任何嵌套级别的子组件使用——就像在应用程序本身中一样。

const store = createStore(reducer) // can also be a mock
ReactTestUtils.renderIntoDocument(
  <Provider store={store}>
    <OuterContainer />
  </Provider>
)

关于javascript - 如何使用 React 和 Redux 测试带有嵌套容器的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175716/

相关文章:

javascript - react : Difference between this. state= 和 this.setState

javascript - 为什么我会收到此 Angular-Mock 错误并且 Mocha 测试未运行

javascript - 为什么在使用 RequireJS 运行 Mocha 测试时会看到 "define not defined"?

selenium - 之前配置的 ChromeDriver 服务仍在运行/使用 Grunt 运行 Webdriver 测试

javascript - jQuery animate 在先前附加的 div 上

javascript - 从当前页面的位置解析 anchor 的最简单方法是什么?

reactjs - '类型错误: parse is not a function' when using gql

javascript - 如何正确插入Reactjs滚动条模块

javascript - 有没有人知道格式化 "abbreviated"数字的好 JavaScript 片段?

javascript - 在 Chrome 中模拟横向 iPad 方向