使用 Jest 测试 Redux Saga

阅读时长 5 分钟读完

Redux Saga 是一个用于管理应用程序副作用(如异步请求和访问浏览器缓存)的库。使用 Redux Saga 可以简化和优化应用程序的复杂性,提高代码的可测试性。本文将介绍如何使用 Jest 来测试 Redux Saga。

安装 Jest

要使用 Jest,首先需要在项目中安装它。可以使用以下命令:

编写测试用例

下面是一个简单的 Redux Saga 示例,该 Saga 获取一个用户列表:

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

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

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

在这个示例中,fetchUserList Saga 使用 call 异步调用 getUserList 方法,如果成功则将结果传递给 put 函数并使用 getUserListSuccess action 更新 store。如果出现错误,则使用 putgetUserListFailure 将错误信息设置到 store。

现在,我们编写一个 Jest 测试用例来测试这个 Saga:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本测试用例使用了 Jest 提供的 jest.mock 函数,用于将 getUserList 的引用指向 jest.fn(),以便对其进行模拟测试。在测试的两个 it 块中,我们派发正确的 action 以调用 Saga,并在必要时等待 action 发送。

使用 sagaTester.getState()expect 语句来断言 Saga 是否已正确地更新了 store 中的状态。

结论

Redux Saga 提供了一种简单而强大的管理副作用的方法,Jest 提供了一个易用的测试框架。通过结合使用这两个工具,可以提高应用程序的可测试性和代码质量,减少代码中发现的错误。

本文中的示例代码可以用于参考和学习。

参考文献

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

纠错
反馈