【问题标题】:unit testing in reduxredux 中的单元测试
【发布时间】:2016-12-12 22:15:33
【问题描述】:

因此文档建议使用模拟存储,但它只是记录所有操作并且没有连接到任何减速器。我基本上只是想对一个组件进行单元测试,并看到给定一个动作已被调度,它发生了变化——类似于(以最一般的方式描述):

期望(counter.props).to.equal(1)
调度(增量())
期望(counter.props).to.equal(2)

有什么想法吗?谢谢

【问题讨论】:

    标签: unit-testing reactjs redux


    【解决方案1】:

    这里涉及到几个因素。

    首先,即使在正常的渲染和使用中,调度一个动作也不会立即更新组件的道具。 connect 生成的包装器组件在 action 被派发后会立即得到通知,但包装器组件的实际重新渲染通常由 React 批量处理并排队。因此,在一行上调度一个动作不会反映在下一行的 props 中。

    其次,理想情况下,“普通”组件实际上不应该对 Redux 本身有任何了解。它只知道它正在获取一些数据作为道具,并且当像按钮点击这样的事件发生时,它会调用一些作为道具提供的函数。因此,测试组件应该独立于测试任何与 Redux 相关的内容。

    如果有帮助,我有很多关于 React and Redux-related testing 的文章作为我的 React/Redux links list 的一部分。其中一些文章可能会帮助您提供一些想法。

    【讨论】:

    • 另外,react-redux 中针对connect 的许多测试都是编写测试的足够好的起点。
    • 谢谢,那么推荐的方法是什么?我正在考虑将我的组件作为dumb-redux-unaware-props-only 进行单元测试,并使用reducers 单元测试单独测试我的状态转换?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2020-01-18
    • 1970-01-01
    • 2020-02-12
    • 2016-12-04
    • 2017-10-14
    相关资源
    最近更新 更多