在 Jest 中测试 Redux-saga

阅读时长 5 分钟读完

Redux-saga 是一个用于管理 Redux 应用程序副作用(例如异步请求和访问浏览器缓存)的库。在 Redux-saga 中,我们可以编写生成器函数,使用基于类似于 ES6 的生成器和 yield 的语法来处理异步逻辑并将其同步化。

测试是任何应用程序开发中的重要部分。在 Redux-saga 中测试就变得尤为重要,因为副作用可能会影响我们的应用程序的正常运行。在本文中,我们将讨论在 Jest 中测试 Redux-saga。

安装 Jest 和 Redux-saga

首先,我们需要安装 Jest 和 Redux-saga。

编写测试

让我们编写一个简单的 saga 并测试它是否按预期工作。

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

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

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

在这个例子中,我们的 saga 使用 call 来调用一个异步的 getUser 方法,然后使用 put 来分发成功或失败的操作。现在,我们需要编写测试来验证这个 saga 是否按预期工作。以下是测试文件的代码。

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

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

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

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

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

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

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

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

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

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

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

这个测试文件包含了两个测试用例。第一个测试用例 when user is fetched successfully 模拟了一个成功的 API 请求,并测试了 getUser API 方法是否被调用,以及 USER_FETCH_SUCCEEDED 操作是否分发。第二个测试用例 when user fetch fails 测试了当 getUser API 方法失败时,USER_FETCH_FAILED 操作是否分发。

运行测试

现在我们已经编写了测试,让我们运行它们。

当测试运行时,Jest 将执行我们的测试用例并报告测试结果。

结论

在本文中,我们讨论了在 Jest 中测试 Redux-saga 的重要性以及如何编写测试用例来验证 sagas 是否按预期工作。我们还讨论了如何使用 callput 来处理异步 API 调用和操作,并包含了一个完整的示例代码,该示例演示了如何测试 Redux-saga。希望这篇文章能帮助你更好地理解 Redux-saga 和 Jest 的使用。

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

纠错
反馈