使用 Jest 测试 Redux 中的异步 action

使用 Jest 测试 Redux 中的异步 action

Redux 是一个流行的 JavaScript 应用程序状态管理库,它可以协调应用程序中的数据流,并使数据状态的更改可预测。在 Redux 中,异步 action 不是很常见,但在某些情况下,例如处理 API 请求时,你需要使用异步 action。在这篇文章中,我们将看一下如何使用 Jest 测试 Redux 中的异步 action。

安装和设置

在开始编写测试之前,你需要确保安装了 Jest 和 Redux。你可以使用以下命令安装它们:

接下来,你需要为 Redux 的 createStore 函数和 applyMiddleware 函数创建一个 store。这可以通过创建一个名为 store.js 的文件来完成,它应该如下所示:

在这个示例中,我们使用了 combineReducer 来将多个 reducer 合并到一个 rootReducer 中,然后将其传递给 createStore 函数。我们还使用了 applyMiddleware 函数来将 redux-thunk 中间件应用于 store。

编写异步 action

异步 action 是 Redux 中处理异步操作的一种方式。它们由 Redux-thunk 中间件提供支持。为了编写一个异步 action,你需要编写一个返回一个函数的 action 创建函数。在这个函数中,你可以执行任何异步操作,并在完成时调度一个普通的 action。

让我们看一个示例。假设我们的应用需要获取远程服务器上的用户列表。我们可以编写以下异步 action:

在这个示例中,我们使用 axios 库来执行 HTTP GET 请求。在请求成功时,我们使用 dispatch 函数调度一个普通的 action。这个 action 包含了来自服务器的用户列表数据。

编写测试

现在我们已经编写好了 Redux 的异步 action,让我们来编写测试。在测试之前,我们需要安装一个名为 redux-mock-store 的库。这个库将为我们提供一个模拟 store,我们可以使用它来测试异步 action。

你可以使用以下命令安装它:

现在,在编写测试之前,我们需要先编写一些辅助函数来测试异步 action。下面是一些常用的辅助函数:

在这个示例中,我们使用了 redux-mock-store 库来创建一个模拟 store。我们还使用了 axios-mock-adapter 库来模拟 axios 库的请求。

现在,我们可以编写我们的测试。以下是一个测试可以测试异步 action 是否能够正确地调度一个普通的 action:

在这个测试中,我们首先模拟了一个 GET 请求,然后使用模拟 store 和异步 action 来测试我们的代码是否正确地调度 action。

总结

在本文中,我们解释了如何使用 Jest 和 redux-mock-store 库测试 Redux 中的异步 action。我们还介绍了一些常用的辅助函数和方法,这些函数和方法可以帮助你编写更好的测试。

本文提供了详细的代码示例和演示,您可以使用它们来测试您自己的 Redux 应用程序中的异步 action。让我们继续保持诚实和谨慎测试!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653071c77d4982a6eb1ed89a


纠错
反馈