如何利用 Enzyme 测试 React Native UI 组件

阅读时长 6 分钟读完

React Native 是一个用 JavaScript 构建跨平台应用的框架,它的 UI 组件需要进行测试以确保它们符合预期。

Enzyme 是一个测试 React 组件的 JavaScript 库。它提供了一些方便的 API 来测试组件的输出和行为。而且,它也可以用来测试 React Native 的组件。

在本教程中,我们将详细介绍如何利用 Enzyme 测试 React Native UI 组件。

准备工作

在开始之前,你需要安装以下工具:

  • Node.js
  • npm
  • react-native-cli

你还需要创建一个新的 React Native 项目。你可以使用 Expo CLI 或 react-native CLI 来创建它。

安装 Enzyme

要在 React Native 项目中使用 Enzyme,我们需要先安装 enzymeenzyme-adapter-react-16react-test-renderer

你可以使用 npm 在你的项目目录下安装它们:

配置 Enzyme

在使用 Enzyme 之前,我们需要先配置它。为此,我们需要在项目中创建一个名为 setupTests.js 的文件。该文件将是我们的 Enzyme 配置文件。

在该文件中,我们需要导入 enzymeenzyme-adapter-react-16react-test-renderer

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

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

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

然后我们还需要设置一个必要的全局变量,它将使我们的测试更容易进行。

请将以下代码添加到项目中的 package.json 中。

配置完成后,你可以使用 Enzyme 了。

编写测试用例

让我们假设我们要测试一个名为 Button 的组件。

组件来自 src/components/Button.js 文件。实现如下:

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

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

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

我们将创建以下两个测试用例:

  1. 测试组件输出。
  2. 测试组件行为(触摸事件)。

测试组件输出

要测试组件输出,我们可以使用 react-test-renderer。它会渲染组件并返回一个 snapshot。我们可以将快照与预期快照进行比较。

我们可以在 src/components/__tests__/Button-test.js 文件中编写第一个测试用例。

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

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

该测试用例将渲染 Button 组件,并将其快照与预期快照进行比较。如果两者相同,测试就会通过。

测试组件行为

要测试组件行为,例如按钮的按下事件,我们可以使用 enzyme。我们将模拟按下事件并检查产生的结果。

我们可以在 src/components/__tests__/Button-test.js 文件中编写第二个测试用例。

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

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

该测试用例创建了一个包含点击事件处理函数的 Button 组件。然后它使用 shallow 模拟渲染该组件并找到 TouchableOpacity 组件,并模拟向其发送 press 事件。最后,它检查 mockFn 函数是否已被调用。

结论

本教程介绍了如何使用 Enzyme 来测试 React Native UI 组件。我们学习了如何安装并配置它,如何编写测试用例以及如何使用 react-test-rendererenzyme 来测试组件输出和行为。

通过使用这些工具,我们可以更轻松地编写高质量的 React Native 应用程序。希望你会喜欢这个教程!请随时在评论区留言,分享你的问题或建议。

示例代码:https://gist.github.com/liyingyuan/8219488f0c157012fab5d5f9d5f1cb5b

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

纠错
反馈