基于 Enzyme 实现 React 组件的创建事例

阅读时长 8 分钟读完

React 是一个开源的 JavaScript 库,用于构建用户界面。Enzyme 是一个流行的测试工具,用于测试 React UI 组件。在本文中,我们将使用 Enzyme 来创建一个基本的 React 组件,并演示如何在其中添加生命周期方法和状态管理。

前置条件

在开始本文之前,您需要:

  • 了解 React 和 Enzyme 的基础知识。
  • 在本地安装 Node.js 和 NPM。

步骤

第一步:创建 React 应用程序

首先,我们需要创建一个新的 React 应用程序。在终端窗口中,运行以下命令:

这将创建一个名为 enzyme-example 的新目录,其中包含一个空的 React 应用程序。

进入该目录,运行以下命令启动应用:

您将在浏览器中看到一个显示“Hello, World!”的页面。

第二步:安装 Enzyme

接下来,我们需要安装 Enzyme。运行以下命令:

这将安装 Enzyme 和与 React 16 兼容的适配器。现在我们可以开始使用 Enzyme 来测试我们的 React 组件。

第三步:创建一个简单的 React 组件

让我们创建一个简单的 React 组件,我们将使用它来演示 Enzyme 的一些功能。

src 目录中创建一个名为 MyComponent.js 的新文件,并输入以下代码:

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

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

这是一个最基本的 React 组件。它将呈现一个包含“Hello, World!”文本的 <div> 元素。

第四步:测试 React 组件

现在,我们已经创建了一个简单的 React 组件,让我们使用 Enzyme 编写一些测试。

src 目录中创建一个名为 MyComponent.test.js 的新文件,并输入以下代码:

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

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

这是一个非常基本的测试,它检查 <MyComponent> 组件是否会正确呈现我们在第三步中定义的内容。我们使用 shallow 函数来浅渲染组件,并使用 Jest 的 toMatchSnapshot() 断言方法来检查组件是否与快照匹配。

运行以下命令来运行测试:

如果一切正常,您将看到一个类似于以下内容的输出:

这表明我们的测试已经通过。

第五步:添加 State 和生命周期方法

我们已经成功测试了一个简单的 React 组件,现在我们尝试通过添加一些生命周期方法和状态来扩展它。

MyComponent.js 文件中,更新代码如下:

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

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

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

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

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

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

我们添加了一个名为 count 的状态,该状态将跟踪用户单击“Increment”按钮的次数。我们还添加了 handleClick() 方法,该方法将在单击按钮时更新状态。我们还添加了两个生命周期方法,componentDidMount()componentWillUnmount(),它们在组件挂载和卸载时分别触发。

第六步:测试添加的内容

我们已经更新了 <MyComponent> 组件,让我们使用 Enzyme 编写另外两个测试。

MyComponent.test.js 文件中,更新代码如下:

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

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

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

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

第一个测试确保按钮增加计数器的功能正确工作。我们使用 component.find() 方法来获取按钮,然后模拟单击事件并检查计数器的状态是否增加。

第二个测试确保在挂载和卸载组件时,生命周期方法会正确触发。我们使用 Jest 的 console.log() 组件来捕获输出并检查预期日志消息。

运行以下命令来运行所有测试:

如果一切正常,您将看到类似于以下内容的输出:

总结

在本文中,我们使用 Enzyme 和 React 创建了一个基本的组件,并演示了如何在其中添加状态和生命周期方法。我们了解了如何使用 Jest 和 Enzyme 来编写测试,以确保我们的组件正在按预期工作。这是基于 Enzyme 实现 React 组件的创建事例,它有深度和学习以及指导意义,希望能对你有所帮助。

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

纠错
反馈