如何使用 Redux Tool Kit 的“createSlice”设置一个单元测试 Redux?

Cer*_*ean 5 reactjs redux react-redux react-apollo redux-toolkit

我正在研究如何使用 Jest 对我们项目的 Redux 代码进行单元测试。我一直在阅读“官方”Redux 建议,但我们的代码与他们引用的 Redux 设置不同,因为我们使用了Redux 工具包(RTK) 和“ createSlice ”,它可以自动执行某些过程,例如 action创造者创造。我们如何对 RTK 创建的 Redux 进行单元测试createSlice?例如,由于动作创建器是自动创建的,测试它们是否有意义?一般来说,由于大部分 RTK 设置是自动的,我们需要测试什么?Redux Tool Kit 是否有任何工具可以使这更容易?(我没有看到)。

此外,我们还有 Redux Thunks,我们已经“手工”设置了它。我们看到了Redux 文档的建议,但是参考上述内容,我们是否应该以不同的方式处理此测试,因为我们使用 RTK 和createSlice?

最后,Redux 所依赖的 API 调用通过 Apollo Client 运行。我看到Apollo 关于如何使用 React 客户端测试 React 的建议。为了测试 Redux,我们是否应该使用类似https://www.npmjs.com/package/mock-apollo-client 的东西来模拟 Apollo Client ?

mar*_*son 11

自己测试简单的动作创建者从来没有任何真正的好处。验证addTodo("buy milk")返回{type: "todos/addTodo", payload: "buy milk"}并不能让我真正相信我的应用程序运行正常。

测试减速器与以往一样:const actual = reducer(testState, someAction), 和expect(actual).toEqual(expected)

测试 thunk 可能有也可能没有实际好处。特别是,如果您正在使用RTK 的createAsyncThunkAPI,那么测试它们可能没有多大意义,因为大部分逻辑来自 RTK 本身。

(请注意,有一个公开的 PR 可以返工 Redux 测试文档页面。)