如何使用 Jest 测试 React Native 应用中 Redux 的 Reducer

阅读时长 4 分钟读完

前言

在开发 React Native 应用时,Redux 是一种重要的状态管理方案。Redux 的核心是 Reducer,它是一个纯函数,接收当前的 state 和 action,返回新的 state。在实际开发中,我们需要保证 Reducer 的正确性,这时候就需要进行单元测试了。本文将介绍如何使用 Jest 测试 React Native 应用中 Redux 的 Reducer。

环境准备

在开始之前,我们需要安装 Jest。Jest 是一个基于 Jasmine 的 JavaScript 测试框架,它提供了测试运行器、断言库、Mock 库以及覆盖率报告等功能,它可以轻松地对 React 组件和 Redux 的应用进行单元测试。

安装 Jest:

编写测试用例

我们将以一个简单的计数器示例为例进行演示,该计数器只有加一操作,没有减一操作。

首先,我们需要编写 Reducer:

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

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

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

Reducer 接收一个类型为 ADD_COUNT 的 action,然后返回一个新的 state,将 count 属性加一。

接下来,我们编写测试用例。测试用例分为两部分,一个是测试 Reducer 的初始状态,另一个是测试 Reducer 返回的新状态。

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

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

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

第一个测试用例测试 Reducer 的初始状态,我们将 state 设置为 undefined,然后调用 Reducer,期望返回 { count: 0 }。

第二个测试用例测试 Reducer 的返回结果,我们将 state 设置为 { count: 0 },然后传入一个类型为 ADD_COUNT 的 action,期望返回 { count: 1 }。

运行测试

我们可以通过以下命令运行测试:

Jest 将会运行所有的测试用例,并输出测试结果。

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

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

总结

使用 Jest 可以非常方便地测试 Redux 的 Reducer,我们只需要编写相应的测试用例,就可以保证 Reducer 的正确性。如果你还没有进行单元测试,建议你在项目中尝试使用 Jest 进行单元测试。

完整示例代码:https://github.com/Edith321/react-native-redux-counter-example

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

纠错
反馈