我想创建sagas + reducers + actions的集成测试,但是我可以看到有关测试redux的所有文档都使用了redux-mock-store
函数。
import configureMockStore from 'redux-mock-store'
有人可以解释为什么会这样,为什么不只是使用完整的商店?
由于
答案 0 :(得分:2)
redux-mock-store的主要优点是可以更轻松地测试异步Redux操作和中间件。
正如丹·阿布拉莫夫(Dan Abramov)所说,关于测试称为api的异步redux动作的主题 -
对于使用Redux Thunk或其他中间件的异步操作创建者,它是 最好完全模拟Redux商店进行测试。你仍然可以使用 applyMiddleware()with mock store,如下所示(你可以找到 以下代码在redux-mock-store中)。你也可以使用nock来模拟 HTTP请求。
图书馆的一个非常有用的部分api能够获得已发送的一系列历史行动。
store.getActions()=> actions:数组
这对于测试将在一段时间内调度多个操作的异步操作特别有用。
从文档中取得的一个例子:
// Test example with mocha and expect
it('should dispatch action', () => {
const initialState = {}
const addTodo = { type: 'ADD_TODO' }
const store = mockStore(initialState)
store.dispatch(addTodo)
const actions = store.getActions()
expect(actions).toEqual([addTodo])
});