在 Jest 中进行 React 和 Redux 的 Full Stack 测试

前言

在当前前端开发中,使用 React 和 Redux 已经成为了不可或缺的技术,而其中后端的接口也需要进行测试,把前后端的代码进行集成测试便成了必要的手段。而 Jest 便是这方面的好选择,本文将介绍如何使用 Jest 进行 React 和 Redux 的 Full Stack 测试。

Jest 简介

Jest 是 Facebook 开源的基于 Jasmine 框架的 JavaScript 单元测试工具,它能够自动识别和模拟模块依赖,创建桩对象,自动转换 ES6/SASS/LESS 等文件,开箱即用,能够简化前端测试复杂度,而且在React中拥有很广泛的应用,能够较好的进行单元测试和集成测试。

基本配置

  1. 安装 Jest
--- ------- ---------- ----
  1. 配置 package.json 在 "scripts" 中添加一行配置
------- ------
  1. 配置 Jest 配置文件 jest.config.js
-------------- - -
  ------ ------------------
  ---------- -
    ------------------ -------------
  --
  ---------- --------------------------------- -------
  --------------------- ------ ------ ------- --------
  ----------------------- --------------------------- ------------------------ -------------------------
  ----------------- -
    ---------------------- -----------------------------------
    ------------------------ ----------------------------------
  --
  -------------------- --------------- ------ -------------------- -------
-
  1. 编写示例测试 在 src 文件夹下创建文件夹__tests__, 示例测试代码如下:
------ ----- ---- --------
------ - ----- - ---- ---------
------ ------------------ ---- -------------------
------ - -------- - ---- --------------
------ ----- ---- --------------
------ --- ---- ------------

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

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

Full Stack 测试实践

实际项目中,集成测试通常涉及到异步 API 调用和多层嵌套组件之间的协调,下面将详细介绍 Jest 的相关用法。

异步 API 测试

在渲染 React 组件的前端应用程序中,通常会有 Ajax 请求,服务器响应处理等异步事件, Jest 有很多工具可以测试异步代码。

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

Redux 模拟 Store

在集成测试时,使用 redux-mock-store 模拟 store 。

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

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

Enzyme 渲染(Shallow和Mount)

在 Jest 中,使用 Enzyme 进行组件渲染和测试,需要安装适当的适配器,例如 enzyme-adapter-react-16。

Shallow 渲染只渲染被测试组件,而不是它的所有子组件,这常常用于测试自闭合的组件。

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

Mount 渲染所有子元素,而不是只渲染被测试的元素,这个过程过程比Shallow昂贵。

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

快照测试

使用 Jest 执行测试时,还可以快速地创建组件快照,并为之后的更改提供检查点。

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

这将创建自上次运行快照测试以来对组件发生的所有更改的快照,使得在之后的运行中,可以迅速地验证代码是否仍然按预期方式运行。

结论

Jest 为 React 和 Redux 提供了强大的测试工具,可以帮助开发人员编写更具可靠性和稳定性的代码。在实践方面,需要注意到异步测试、Enzyme 测试和快照测试的使用,只有通过合理地使用所有这些工具,才能够更加有效地开发和测试 React 应用程序的前端和后端。

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