使用 Jest 测试 Redux,轻松上手指南

阅读时长 6 分钟读完

Redux 是一个用于 JavaScript 应用程序的可预测状态容器。它可以处理随着时间推移变化的状态,而不会让你陷入混乱的条件嵌套或循环。该文将教你如何使用 Jest 来测试 Redux。

为什么需要测试 Redux

在 Redux 中,我们会有一个 Store 来存储我们应用程序的状态。在这种情况下,我们将这个状态称为 state。我们将对 state 进行管理,以便我们可以随时查看我们应用程序的状态,并使操作更加可预测。

为了确保我们的代码能够正常工作,我们需要进行测试。这有助于我们在代码中引入新错误时,尽早发现它们,从而减少故障和测试时间。

什么是 Jest?

Jest 是 Facebook 开源的一个 JavaScript 测试框架,它专注于提供一个优雅的、零配置的测试环境。Jest 也已经成为 React 社区最受欢迎的测试框架。

Jest 除了可以做一些基本的测试断言外,还提供了丰富的 API,使得测试变得更加简单和高效。它还与 Babel、TypeScript 等工具的集成非常友好。

安装 Jest

首先,你需要在项目中添加 Jest 依赖。

这将安装 Jest 到我们的项目的开发依赖中。

配置 Jest

创建一个文件 jest.config.js,Jest 默认会在当前工作目录下搜索此文件。以下是一个最基本的配置示例:

以上配置指定 Jest 使用 Node.js 环境来运行我们的测试,并告诉它只搜索 src 目录下的测试文件。

如何测试 Redux

在 Redux 应用程序中,我们需要测试三个关键部分:reducers、actions 和 selectors。

  1. 测试 reducers

Reducers 是我们状态的管理者。当我们拥有一个草图或原型时,我们可以根据它们去编写测试用例并验证 reducers 是否按照我们的期望工作。

以下是一个简单的 reducer 的示例:

-- -------------------- ---- -------
------ - ----------------- - ---- --------------

----- ------------ - -
  -------- --
--

-------- -------------------- - ------------- ------- -
  ------ ------------- -
    ---- ------------------
      ------ -
        ---------
        -------- ------------- - --
      --
    --------
      ------ ------
  -
-

------ ------- ---------------

我们可以编写一个测试用例来测试这个 reducer:

-- -------------------- ---- -------
------ -------------- ---- -------------
------ - ----------------- - ---- --------------

----------------- --------- -- -- -
  ---------- ------ ------------------- -- -- -
    ----------------------- -------- - -- - ----- ----------------- ------------- -------- - ---
  ---

  ---------- ------ ------- ------ ------ -- -- -
    ----------------------------------- - ----- --------- --------------------------
  ---
---

上面的测试用例验证了当传入 INCREMENT_COUNTER 状态时,我们的 reducer 应该增加计数器。

  1. 测试 actions

Actions 会触发我们的状态更新。它们由纯 JS 对象组成,其中至少要包含一个 type 属性来告诉 reducer 要执行什么操作。

以下是一个简单的 action 示例:

同样,我们也可以编写一个测试用例来测试这个 action:

-- -------------------- ---- -------
------ - ---------------- - ---- ------------
------ - ----------------- - ---- --------------

----------------- --------- -- -- -
  ---------- ------ -- ------ -- --------- --------- -- -- -
    ----- -------------- - -
      ----- ------------------
    --
    ---------------------------------------------------
  ---
---

这个测试用例验证了当我们调用 incrementCounter 时,它将返回一个包含 INCREMENT_COUNTER 类型的 action。

  1. 测试 selectors

Selectors 帮助我们从 state 中以一种组织良好的方式提取数据。我们可以编写测试用例,以确保选择器按照预期工作。

以下是一个简单的 selector 示例:

同样,我们也可以编写一个测试用例来测试这个选择器:

这个测试用例验证了当我们调用 getCounterValue 时,它可以正确从 state 中返回 counter 的值。

总结

我们已经学习了如何使用 Jest 测试 Redux 应用程序。我们看到,可以使用 Jest 来编写测试用例,以验证 reducers、actions 和 selectors 是否按照期望的方式工作。

当我们编写测试用例时,我们可以更加自信地修改和重构代码,因为我们有了一组准确的测试供我们验证代码的正确性。

希望这篇文章能给你带来帮助,让你更加自信地编写和维护 Redux 应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66580eb7d3423812e4dcf74d

纠错
反馈