反应redux redux-saga的集成测试

zer*_*ero 7 integration-testing reactjs redux redux-saga react-redux

我有这样的项目结构:

app/
  global/
    styles/
    components/
  scenes/
    Home/
      actions.js
      constants.js
      index.jsx
      reducer.js
      sagas.js
      styles.styl
      index.spec.jsx
    some-other-scene/
      actions.js
      constants.js
      index.jsx
      reducer.js
      sagas.js
      styles.styl
      index.spec.jsx
Run Code Online (Sandbox Code Playgroud)

所以我对使用这种结构的单元测试没有任何问题,但我对如何构建集成测试感到困惑.对于我的单元测试,我将每个场景组件导出为一个类

export class SomeComponent extends Component {}
Run Code Online (Sandbox Code Playgroud)

并作为redux连接组件

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(SomeComponent)
Run Code Online (Sandbox Code Playgroud)

因此,对于第一种导出方式(类)我是单元测试它,但对于第二种方式(连接组件方式),我不确定如何具体如何在react/redux中进行集成测试.我在互联网上搜索了这个,但没有任何接近这个结构.

所以:

  1. 是react/redux/middleware(在这种情况下是redux saga)中的集成测试,一个组件如何与redux和中间件集成.
  2. 或者它是关于整个应用程序如何与所有安装的组件一起工作?
  3. 如果它是#1这意味着每个组件应该有一个集成测试文件来测试组件如何与redux和中间件集成,或者如果它是#2那么它是一个测试文件,将所有组件测试为一个应用程序?

另外,如果它是#1那么我应该如何通过反应路由器测试路由?

Syl*_*ain 2

就您的示例而言,我们所做的是导出mapStateToPropsmapDispatchToProps并为它们编写单元测试(当它们不简单时)。

我想您已经对您的动作创建器、传奇和减速器进行了单元测试。

就整合而言还剩下什么?您可能希望将组件安装在真实存储的上下文中,以查看它们是否对 redux 存储的突变做出正确的反应以及它们是否调度正确的操作。在我的项目中,我们使用端到端浏览器自动化测试来验证这样的事情。