如何为功能完整的 React 应用程序编写 Jest 测试

阅读时长 5 分钟读完

随着前端应用程序越来越复杂,测试变得越来越重要。在 React 应用程序中使用 Jest 进行测试是一种非常受欢迎的做法。在本文中,我们将探讨如何使用 Jest 和 Enzyme 来编写测试,并为您提供示例代码。

准备工作

在开始编写测试之前,我们需要安装 Jest 和 Enzyme。我们可以使用 npm 来处理这些依赖项:

在安装完依赖项后,我们需要配置 Jest。我们需要创建一个 jest.config.js 文件,并在其中添加以下配置:

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

.babelrc 文件中设置 Babel,以支持 ES6 和 React:

Enzyme 需要一个适配器,它允许我们使用 React 16+ 中的新 API,我们需要在 src/setupTests.js 文件中设置它 / 导入它:

我们还需要在 package.json 文件中添加以下命令:

这样我们就准备好了通过 Jest 进行测试了。

编写测试

快照测试

快照测试是一种非常快速的测试,它会将 React 组件渲染成一份 HTML 代码,并将其与以前保存的快照进行比较。如果这两个快照不同,测试就会失败。

我们首先需要编写一个简单的 React 组件,以便进行快照测试:

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

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

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

接下来,我们编写一个快照测试,以测试组件是否正确显示:

在运行测试后,将在您的项目中创建一个名为 __snapshots__ 的文件夹,并在其中包含一个名为 MyComponent.test.js.snap 的文件。这个文件包括 MyComponent 的快照。如果以后对组件进行更改,Jest 会将其与以前的快照进行比较,并通知您需要更新快照。

组件测试

组件测试是更细粒度的测试。它们允许我们测试组件的每个方面,包括它的状态,它的 props,以及它如何响应在它上下文中更改的事件。我们将编写一个测试,以测试组件是否能够在点击按钮时更改它的状态:

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

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

在这个测试中,我们首先浅渲染组件,然后查找渲染的 HTML 中的元素, 并测试它们是否正确显示。接下来,我们模拟按钮的点击事件,并断言状态是否正确更改。

使用 Enzyme,我们可以测试组件的其他方面,例如使用 props() 来测试组件是否正确处理 props。

总结

Jest 能够为复杂的 React 应用程序提供单元和集成测试,它可以运行在 Node.js 和浏览器中。使用 Jest 时,我们可以编写快照测试和组件测试。快照测试可以很好地帮助我们快速测试应用程序,并确保它们按预期显示。组件测试允许我们更细粒度地测试组件,并确保它们可以正确地响应用户的操作。我们希望这篇文章能帮助您开始使用 Jest 编写测试,从而改进您的前端应用程序。

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

纠错
反馈