Jest+Enzyme:轻松测试 React 应用程序

如果您正在开发 React 应用程序,测试是非常必要和重要的一步。Jest 和 Enzyme 是两个流行的 JavaScript 测试框架和库,可以帮助您方便地测试 React 应用程序。本文将详细讲解 Jest 和 Enzyme 的基本知识,并提供示例代码和指导,帮助您轻松测试 React 应用程序。

Jest 的基本知识

Jest 是 Facebook 开源的 JavaScript 测试框架,它是快速、简单和零配置的。它支持基于测试运行的异步代码、测试断言、测试覆盖率和快照等功能。Jest 支持多种测试类型,包括单元测试、集成测试和端到端测试等。在这里,我们将关注 Jest 的单元测试。

安装 Jest

您可以通过 npm 安装 Jest:

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

编写测试用例

Jest 测试用例默认在 <rootDir>/__tests__ 目录下。您可以按照以下方式编写测试用例:

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

在上面的代码中,我们定义了一个测试用例,它会检查 1 加 2 是否等于 3。我们可以使用 toBe() 函数进行检查。

运行测试

JavaScrpt 开发者都知道,运行测试也需要一定的时间和资源,所以开发过程中测试运行要尽可能快速和高效。Jest 可以减少测试运行所需要的时间和资源,例如只运行修改的测试用例、并行测试等。

您可以在 package.json 文件中添加以下代码:

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

并通过以下命令运行测试:

--- ----

Jest 会自动查找所有的测试文件,并执行测试。

Enzyme 的基本知识

Enzyme 是 Airbnb 开源的一个 JavaScript 测试库,它可以帮助您方便地测试 React 组件。它支持多种测试类型,包括浅渲染、全渲染和静态渲染等,可以让您测试 React 组件的输出、行为和状态等。

安装 Enzyme

您可以通过 npm 安装 Enzyme 和它的适配器:

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

浅渲染

您可以使用 Enzyme 的 shallow() 函数进行浅渲染,它只渲染组件的一层,不会渲染组件的子组件。在以下示例中,我们将测试组件是否正确渲染了标题元素。

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

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

在上面的代码中,我们使用了 shallow() 函数,从而只渲染了组件 MyComponent 中的一层。我们使用了 contains() 函数检查组件是否包含了 <h1>Hello Jest!</h1> 元素。

全渲染

您可以使用 Enzyme 的 mount() 函数进行全渲染,它会完全渲染组件及其子组件,可以让您测试 React 组件的行为和状态等。在以下示例中,我们将测试渲染组件能否正常触发点击事件并更新状态。

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

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

在上面的代码中,我们使用了 mount() 函数渲染了组件 MyComponent 及其子组件。我们使用了 simulate() 函数触发了点击事件,并检查了组件的状态是否正确地更新了两次。

静态渲染

您可以使用 Enzyme 的 render() 函数进行静态渲染,它可以将组件渲染为纯 HTML,可以让您测试组件的输出等。

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

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

在上面的代码中,我们使用了 render() 函数将组件渲染为纯 HTML。我们使用了 toMatchSnapshot() 函数检查组件是否正确输出。

集成 Jest 和 Enzyme

您可以集成 Jest 和 Enzyme,以便应用程序在测试时运行 Enzyme。在以下示例中,我们将测试渲染是否正确并进行快照测试。

安装 Enzyme Jest 适配器

您需要在 Jest 中安装 Enzyme 的适配器:

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

并配置 Jest:

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

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

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

配置 Jest

在 package.json 文件中添加以下配置:

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

测试应用程序

在示例应用程序的 src 目录下创建一个 App.test.js 文件:

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

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

在上面的代码中,我们使用了 shallow() 函数将 App 组件浅渲染,并使用 toMatchSnapshot() 函数进行快照测试。

运行测试

您可以使用以下命令运行测试:

--- ----

所有测试都将自动运行。

结论

在本文中,我们讨论了 Jest 和 Enzyme 的基本知识,并提供了示例代码和指导,帮助您轻松测试 React 应用程序。我们强烈建议您使用测试来提高应用程序的质量和可维护性。Jest 和 Enzyme 不仅简单易用,而且可以提供各种测试类型和功能,使测试变得更加简单。

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