Enzyme 官方文档中文版:基于 Enzyme 进行 React 组件测试

在 React 应用程序开发中,测试是非常重要的一部分。通过测试,我们可以确保我们的组件是正确的,正确性可以被重复检查,这有助于减少代码中的错误,并且可以加速开发流程。Enzyme 是一个非常流行的测试工具,它提供了一些帮助我们测试 React 组件的强大功能。在本文中,我们将讲解如何使用 Enzyme 进行 React 组件测试,并提供一些实践意义的例子。

什么是Enzyme?

Enzyme 是由 Airbnb 开发的 React 组件测试工具。它为开发人员提供了一个强大的 API,用于测试组件的 UI、状态和行为。它主要是一个测试库,用于模拟 React 组件的行为。

Enzyme 提供了三种渲染类型:浅渲染(shallow),静态渲染(static),完全渲染(mount)。通过这些不同的渲染类型,我们可以测试 React 组件在不同场景下的渲染方式,验证组件是否正常工作。

安装Enzyme

首先,我们需要安装 Enzyme。可以通过 npm 进行安装:

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

注意:如果你使用的是 React 16.13.1 及以前的版本,请同时安装 Enzyme Adapter:

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

然后,在配置文件中添加以下内容:

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

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

Enzyme 的API

Enzyme 提供了一些强大的 API,可以帮助我们测试 React 组件。在这里,我们将介绍最常用的一些 API。

shallow

shallow 方法用于浅渲染组件,它只渲染组件的一个级别。它返回的是一个shallowWrapper对象,它允许我们查找渲染组件的元素及其属性。

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

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

mount

mount 方法用于完全渲染组件,它渲染组件的所有子元素。它返回的是一个mountWrapper对象,它允许我们查找渲染组件的元素及其属性。

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

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

static

static 方法用于静态渲染组件,它返回的是一个 React 元素对象。它不允许我们查找渲染组件的元素及其属性,但它对于测试 React 组件的 defaultProps 很有用。

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

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

find

find 方法用于查找匹配的元素,它接收一个选择器作为参数。

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

prop

prop 方法用于获取渲染组件的属性。

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

setState

setState 方法用于设置组件的 state。

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

simulate

simulate 方法用于模拟事件,接收事件类型及其属性作为参数。

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

实际应用

让我们通过一些实际的例子来演示如何测试 React 组件。

测试组件属性

让我们假设我们有一个简单的 MyComponent,它接收一个 name 属性并在页面上显示它。

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

如何使用 Enzyme 测试组件属性?我们将使用 shallow 方法,首先检查是否能够正确地渲染我们的组件,然后使用 props 方法检查组件是否设置了正确的属性。

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

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

测试组件状态

让我们假设我们有一个简单的 MyComponent,它有一个按钮,单击它时将在状态中设置一个值。

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

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

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

如何使用 Enzyme 测试组件状态?我们将使用 simulate 方法模拟单击事件,然后使用 prop 方法检查组件的状态是否正确更改。

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

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

测试组件交互

让我们假设我们有一个简单的 MyComponent,它有两个输入框和一个按钮,单击按钮时将组合输入框中的值。

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

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

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

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

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

如何使用 Enzyme 测试组件交互?我们将使用 simulate 方法模拟在输入框中输入值,然后模拟点击按钮,最后使用 state 和 toHaveLength 方法检查组件是否正确交互。

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

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

结论

Enzyme 是一个非常强大的测试工具,它提供了多种渲染类型和强大的 API,帮助开发人员测试 React 组件。在本文中,我们介绍了 Enzyme 的安装和基本用法,并演示了如何使用它进行 React 组件测试的实际应用。这些例子可以帮助你更好地了解如何使用 Enzyme。当你开始测试你的 React 应用程序时,Enzyme 可以成为你的强大盟友。

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