在 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


猜你喜欢

  • 如何使用 SQL 优化性能

    随着数据量的不断增大,数据库的性能优化变得越来越重要。在前端领域,我们经常需要与数据库打交道,例如在网站中展示数据、读取用户信息等。良好的 SQL 优化能够在很大程度上提高网站的响应速度和用户体验。

    5 天前
  • Webpack 构建项目异常慢的原因与解决方案

    随着前端技术的发展,Webpack 作为一款前端项目构建工具,也变得越来越重要。然而,有时候我们会遇到项目构建异常慢的情况,这严重影响了我们的工作效率。本文将从原因分析和解决方案两个方面来详细介绍如何...

    5 天前
  • 遇到 Serverless 内存泄漏怎么办?

    引言 随着 Serverless 技术的普及,越来越多的前端工程师开始尝试在云端环境中构建应用。然而,在 Serverless 架构中,内存泄漏是一个极为普遍的问题,并且通常会影响应用的性能和稳定性。

    5 天前
  • Chai.js expect 语法中的 `to.be.a` 和 `to.be.an` 详解

    在前端开发中,自动化测试是至关重要的部分,而自动化测试依赖于各种测试框架和库。其中一个很有用的库是 Chai.js,它提供了一些非常有用的测试语法,其中包括 to.be.a 和 to.be.an 。

    5 天前
  • 在 SPA 应用中使用服务端渲染的最佳实践教程

    随着 SPA 应用的发展,服务端渲染 (Server-side Rendering, SSR) 成为了越来越多前端开发人员的关注点。SSR 可以提高应用的性能和可访问性,但同时也会增加开发的复杂度。

    5 天前
  • 完整教程:如何在 Koa.js 中使用 TypeScript

    在Koa.js与TypeScript的结合中,你可以使用 TypeScript 来更加优雅地编写和管理你的代码,同时也能够获得 TypeScript 静态类型检查的好处。

    5 天前
  • Kubernetes 调度器解析:Pod 调度过程详解

    Kubernetes 是一个由 Google 开源的容器编排系统,它可以自动化应用程序的部署、扩展和管理。在 Kubernetes 中,调度器负责将 Pod 调度到集群中的 Node 上。

    5 天前
  • 如何构建一个完美的 GraphQL Server?

    GraphQL 是一种查询语言,它允许前端开发人员定义他们所需的数据,从而使 API 更灵活和具有可扩展性。构建一个完美的 GraphQL Server 可以让你更好地理解如何构建现代 API 和开发...

    5 天前
  • 使用 CSS Flexbox 实现卡片列表布局

    引言 在任何网站或应用中,卡片式列表布局是最常见的布局之一。许多应用程序和网站使用卡片式布局来呈现内容,例如社交媒体站点、电子商务平台和新闻网站等。卡片列表布局可以有效地使页面组织和布局更具观感和可用...

    5 天前
  • React Native 中集成高德地图组件指南

    React Native 是一种基于 JavaScript 的前端框架,让开发者可以使用一致的开发语言和工具来构建 iOS 和 Android 应用。高德地图是一款广泛使用的地图应用,提供了丰富的 A...

    5 天前
  • 响应式设计中如何选择 CSS Framework

    在前端开发中,响应式设计已经成为了一种标准,因为我们需要确保网站在各种设备上都能够正常运行并且呈现出最佳效果。为了实现这一目标,我们需要选择一种好的 CSS Framework 来构建我们的网站,并且...

    5 天前
  • 如何在 Headless CMS 中使用 OAuth 进行用户认证?

    随着前端技术的发展,越来越多的人开始使用 Headless CMS ,这种架构能够帮助开发者在前端和后端之间进行良好的协作,带来了更灵活,更高效的开发模式。但是,对于需要用户认证的 Headless ...

    5 天前
  • 如何使用 Kubernetes 来优化 Serverless 应用的响应速度

    使用 Kubernetes 来优化 Serverless 应用的响应速度 随着云原生技术的发展,越来越多的企业开始采用 Serverless 架构来构建和部署应用。

    5 天前
  • 避免在使用 Custom Elements 时可能遇到的性能问题

    Custom Elements 是一种新的 Web API,在 Web 应用程序中通过定义新的 HTML 标签来创建可重用的组件。虽然 Custom Elements 提供了一种高度抽象的方式来构建组...

    5 天前
  • 无障碍模式下,如何实现悬浮窗的手势控制

    前言 现在随着人们对于无障碍模式越来越重视,开发者们需要考虑怎样去实现在这种模式下的交互。今天,我们将介绍一种实现在无障碍模式下的悬浮窗的手势控制的方法,确保所有用户都可以方便的操作你的应用。

    5 天前
  • 小开发者拼团之旅:与 Koa.js 有关的坑和成果分享

    小开发者拼团之旅:与 Koa.js 有关的坑和成果分享 前言 作为一名小开发者,我们都有过在项目中使用各种框架的经历。在前端领域中,Koa.js 是一个十分优秀的框架,它基于 Node.js 平台,专...

    5 天前
  • ES12 中的双边名称空间

    自 ECMAScript 2021(ES12)起,JavaScript 引入了一种新的特性,称为双边名称空间(Dual Namespace)。该特性提供了一种更加灵活且安全的方式来定义私有字段,为开发...

    5 天前
  • Next.js 应用如何实现图片懒加载

    介绍 图片懒加载是一种优化网站性能的技术,它可以减少网站的加载时间,并提高用户体验。图片懒加载的核心思想是:只在需要的时候才加载图片,而不是一开始就把所有图片全部加载。

    5 天前
  • Kubernetes Deploy 指令使用详解

    Kubernetes是目前最流行的容器编排工具之一,也是云原生应用开发的标准之一。在Kubernetes集群中,Deploy指令是最常用的部署工具之一。Deploy指令可以方便地管理集群中的容器,包括...

    5 天前
  • ECMAScript 2018 新特性之末尾逗号 (TC39 是个好孩子)

    在2018年6月,JavaScript 社区发布了 ECMAScript 2018 规范,其中包含了一些新的特性,这些特性涉及到语言的核心特性以及标准库的添加和更新。

    5 天前

相关推荐

    暂无文章