在 Enzyme 和 Jest 组合下用 React 测试组件

在 Enzyme 和 Jest 组合下用 React 测试组件

在现代前端开发环境中,React 是目前使用最广泛的开源 JavaScript 库之一。React 可以创建高度专业化的用户界面,可以快速得到反馈并能使整个应用程序保持稳定。但是,在编写复杂的用户界面时,必须经过测试来确保新的更改不会破坏旧有的代码。在这种情况下,前端开发人员通常会使用 Enzyme 和 Jest。本文将介绍如何在 Enzyme 和 Jest 组合下使用 React 测试组件。

什么是 Enzyme 和 Jest?

Jest 是一个 JavaScript 测试框架,是由 Facebook 开发和维护的,它可以为 React 组件创建基础测试。Jest 具有许多特性,例如快速的异步测试、内置的测试运行器和代码覆盖率报告等等。

Enzyme 是由 Airbnb 维护的一个 JavaScript 库,它可以完善 Jest 的 React 组件测试功能。Enzyme 提供了快速、简单且强大的方式:渲染、搜索和操纵虚拟 DOM。可以使用 Enzyme 搜索和检索 DOM 和组件层次,然后模拟各种 DOM 交互。这些功能使测试 React 组件更加方便,无需摆弄 React 实例或依赖真实浏览器环境。

Enzyme 提供了三种用于渲染 React 组件的渲染类型:浅渲染、静态渲染和完全渲染:

  • 浅渲染:Enzyme 提供了 Shallow 方法,它可以在不深入渲染组件内部的情况下渲染组件。
  • 静态渲染:Static 方法允许开发人员将 React 组件渲染为静态 HTML 字符串,并使用该字符串进行测试。
  • 完全渲染:最后, Full 方法可通过模拟完整的 DOM 渲染获取 React 组件。

测试一个简单的组件

首先,我们来测试一个简单的 React 组件。以下是一个用于在页面上输出文本消息的组件:

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

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

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

我们将使用 Jest 和 Enzyme 检查组件是否正常。第一步是将它们安装为依赖项:

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

下一步是将 enzyme 中的适配器添加到 Jest 配置中。在项目的 package.json 档案中找到 jest 段:

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

在 jest 对象的后面添加下面的代码:

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

在这里,我们正在告诉 Jest 在运行任何测试之前运行名为 setupEnzyme.js 的文件。接下来,创建一个新的 JavaScript 文件,该文件将设置 Enzyme 和适配器:

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

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

现在,加载 Message 组件并将它传递到 Shallow 方法中进行测试:

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

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

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

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

在这里,我们正在测试 Message 组件。它有两个测试用例。

第一个测试用例是测试 Message 组件是否可以正确地呈现(调用它时是否崩溃)。Jest 使用 it(测试用例),并使用 expect 进行断言。

第二个测试用例是检查组件是否正确呈现 messageContent。我们可以通过浅查询来获取元素,然后使用內置方法 contains 断言是否已正确呈现消息。

为了运行测试,我们将添加以下脚本到 package.json:

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

运行 npm test 命令对 Message 组件运行测试。如果测试是成功的,我们将看到类似于这样的输出:

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

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

结论

Jest 和 Enzyme 是 React 测试的黄金标准。这些库是强大且易于使用的工具,可以帮助前端开发人员测试其代码的质量和可靠性。希望这篇文章能够帮助我们学习如何在 Enzyme 和 Jest 组合下使用 React 测试组件,以使代码保持健康和完好无损。

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