【发布时间】:2016-06-18 10:46:30
【问题描述】:
假设我有几个减速器功能,我使用combineReducers(...) 将它们全部组合成一个减速器,有没有办法测试组合减速器实际包含哪些减速器?
例如,如果我有这个:
import { combineReducers } from 'redux'
const reducer1 = (state, action) => {...}
... (more reducers, etc)
const rootReducer = combineReducers({
reducer1,
reducer2,
reducer3
})
export default rootReducer
我可以使用 Mocha 和 Expect.js 编写一个测试,以检查 rootReducer 是否包含 reducer2?这甚至可能吗?
我目前设置项目的方式是,每个减速器都在一个单独的文件中,然后导入到使用combineReducers(...) 函数将它们全部组合起来的文件中。我正在测试所有单个减速器以检查它们是否做了他们应该做的,但我也认为测试组合减速器以确保它包含它应该包含的所有其他减速器是一个好主意(以防我忘记例如添加一个)。
谢谢
【问题讨论】:
-
它是否更重要如果它包含“reducer2”(无论这意味着什么)还是它与reducer2一样工作?我认为您的测试可能会问错误的问题...另外,查看github.com/reactjs/redux/blob/master/src/combineReducers.js#L93,我没有看到任何参考返回到未组合的减速器(以太
finalReducers或reducers),所以“不”我想是你的直接回答。它返回的只是一个循环并调用所有个体的函数...... -
谢谢。您的评论让我想到了减速器的实际作用,并让我意识到它会产生一个状态,其键以传递给 combineReducers 函数的减速器命名,因此我可以测试返回的状态并检查它是否包含键我希望它会。这样我就知道我是否已经通过了所有必需的减速器。
标签: javascript mocha.js redux expect.js