我想要创建sagas + reducers + actions的集成测试,但是我看到的关于测试redux的所有文档都使用了redux-mock-store函数。
import configureMockStore from 'redux-mock-store'有人能给出一个解释为什么这是,为什么不只是使用一个完整的商店?
谢谢
发布于 2017-01-09 19:22:38
如果这个对象是仅为测试目的而创建的redux存储的副本,那么创建一个完整的Redux存储用于测试并不是错误的。如果您创建的模拟商店不是redux存储的精确副本,那么就错了。
Redux模拟存储的主要优点是它使测试异步Redux操作和中间件.变得更加容易。
正如Dan Abramov在测试调用api的异步redux操作时所说的-
对于使用Redux或其他中间件的异步操作创建者,最好完全模拟Redux存储进行测试。您仍然可以在模拟存储中使用applyMiddleware(),如下所示(您可以在redux-模拟存储中找到以下代码)。您还可以使用nock来模拟HTTP请求。
libary的api中一个非常有用的部分,即获得已分派的历史操作数组的能力。
store.getActions() =>操作:数组
这对于测试将在一段时间内分派多个操作的异步操作特别有用。
从文档中获取的一个示例:
// 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])
});https://stackoverflow.com/questions/41553987
复制相似问题