Enzyme 如何测试父组件方法中调用子组件方法

阅读时长 4 分钟读完

在 React 应用中,经常会有父组件调用子组件的方法的情况。这时候,我们需要测试这个过程是否正常。Enzyme 是 React 测试工具之一,可以帮助我们测试这个过程。

Enzyme 简介

Enzyme 是 Airbnb 开源的 React 测试工具,提供了一种易于使用的 API,可以帮助我们测试 React 组件的输出、行为和状态。Enzyme 支持三种渲染方式:shallow、mount 和 render。

  • shallow:只渲染当前组件,不渲染子组件。
  • mount:渲染当前组件以及子组件,并挂载到真实的 DOM 上。
  • render:渲染当前组件以及子组件,但不挂载到真实的 DOM 上,而是返回一个静态的 HTML 字符串。

在本文中,我们将使用 shallow 渲染方式进行测试。

测试场景

假设我们有一个父组件 Parent 和一个子组件 ChildParent 组件中有一个方法 handleClick,调用 Child 组件中的方法 handleChildClick

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

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

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

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

我们需要测试当点击按钮时,是否能够触发 Child 组件中的 handleChildClick 方法。

测试方法

首先,我们需要安装 Enzyme 和相应的适配器。我们使用 Enzyme 的最新版本 4.x,适配器使用 enzyme-adapter-react-16

然后,在测试文件中,我们需要引入 configure 方法来设置 Enzyme 的适配器。我们使用 shallow 方法来渲染 Parent 组件。

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

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

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

在测试中,我们使用 jest.spyOn 方法来监听 Child 组件中的 handleChildClick 方法是否被调用。然后,我们模拟点击按钮,判断方法是否被调用。

结论

在本文中,我们使用 Enzyme 测试工具来测试父组件方法中调用子组件方法的场景。我们通过监听子组件方法是否被调用来判断测试是否通过。Enzyme 提供了易于使用的 API,方便我们进行组件测试。

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

纠错
反馈