在使用 Enzyme 测试组件时,如何访问它的 props?

在前端开发中,组件是开发界面和构建交互性的重要工具。而在组件的开发过程中,测试也是一项非常重要的任务。Enzyme 是 Airbnb 开源的 React 组件库测试工具,可以用于快速,轻松且可靠地测试 React 组件。那么在使用 Enzyme 进行测试时,我们如何访问组件的 props 呢?

Enzyme 简介

  • Enzyme 是什么?

    Enzyme 是一个 React 测试库,旨在使测试 React 组件轻松,直观和有趣。Enzyme 提供了更直观的 API 并增强了 Jest、Mocha 和其他测试工具。

  • Enzyme 的优势

    1. 优化测试组件的创建,操作和检验。
    2. 提供了更直观,更表现力和更简单的 API。
    3. 支持多种渲染方式,包括浏览器和 Node.js 环境下渲染。
    4. 支持 Shallow(浅渲染)、Mount(全渲染)和 Render(静态渲染)三种渲染方式。
    5. 提供了断言库,包括 Chai 和 expect。

访问组件的 props

获取组件的 props 是在测试组件时非常常见的需求。在 Enzyme 中也提供了多种方式可以获取组件的 props,下面分别介绍一下常见的几种方式。

1. Shallow rendering

Shallow rendering 只渲染当前测试组件,不渲染子组件。在 Enzyme 中,可以使用 Shallow() 函数获取被渲染的组件实例。那么如何访问实例的 props 呢?我们可以使用实例的 props() 函数来获取当前组件实例的 props。

代码示例:

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

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

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

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

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

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

2. Full rendering

Full rendering 在实际 DOM 中将渲染整个 React 组件树,并返回 React 组件在实际 DOM 中的实例。因此,我们可以使用 React 组件在实际 DOM 中的实例的 props 属性,来获取组件实例的 props 值。

代码示例:

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

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

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

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

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

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

3. Static rendering

Static rendering 在内存中渲染 React 组件,返回一个对象包含组件呈现的 HTML 和渲染时使用的组件实例。我们可以使用 Enzyme 的 render() 函数获得组件的 HTML 并使用 cheerio 库(一款 jQuery 兼容的 Node.js HTML 解析器)来解析 HTML 并测试 HTML 片段的内容。

代码示例:

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

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

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

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

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

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

总结

本文详细介绍了如何在 Enzyme 中访问组件的 props。同时,我们知道了 Enzyme 的三种渲染方式以及它的优势。随着前端技术的发展,组件化已成为前端开发的主流,希望本文能够对大家了解组件化测试、掌握 Enzyme 测试工具有所帮助。

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