Enzyme 测试组件的文本内容和样式

阅读时长 8 分钟读完

Enzyme 测试组件的文本内容和样式

在前端开发中, 组件化已经成为了一种主流的开发方式, 简化了代码逻辑, 方便了团队协作和代码重用。而组件的开发与维护离不开测试, 包括单元测试, 集成测试等等。Enzyme 就是一款非常强大的 React 组件测试工具, 可以帮助开发者有效的测试组件的文本内容和样式。

Enzyme 的基本使用方法

首先我们需要安装 Enzyme, 并引入 React 以及 React-DOM:

如果你使用的是 Jest 测试框架, 则需要再安装 Jest 的 Enzyme 适配器:

然后在测试文件中引入 Enzyme 和适配器:

其中, shallow 函数可以用来创建组件的浅渲染, mount 函数可以用来进行深度渲染。有了这些准备工作, 就可以尝试 Enzyme 的各种测试方法了。

文本内容的测试

大部分组件都包含了文本内容, Enzyme 可以通过下面几种方法测试文本内容是否符合预期。

  • .text()

.text() 方法可以用来获取组件包含的文本内容, 例如下面的 Button 组件:

测试代码可以写成这样:

可以看到, .text() 方法返回了 Button 组件中的文本, 并验证是否和预期值相等。

  • .html()

如果组件包含了 HTML 元素, 可以使用 .html() 方法来测试是否正确渲染了 HTML。

例如, 下面的 Title 组件:

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

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

可以通过以下方法测试是否正确渲染了 HTML:

  • .contains()

.contains() 方法可以用来验证组件是否包含了某个文本。

例如, 下面的 Article 组件可能包含了一个标题和正文:

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

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

可以通过下面的方法测试是否包含了正确的标题和正文:

CSS 样式的测试

Enzyme 也可以很好的测试组件的样式, 通过 .hasClass() 和 .prop() 方法来验证组件类名和样式属性是否符合预期。

  • .hasClass()

.hasClass() 方法可以用来验证组件是否包含了某个类名。

例如, 下面的 Navigation 组件可以包含多个选项卡:

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

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

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

可以使用 .hasClass() 方法来验证是否正确设置了选项卡的类名:

可以看到, .hasClass() 方法帮助我们验证是否正确设置了选项卡的类名。

  • .prop()

.prop() 方法可以用来验证样式属性是否正确设置。

例如, 下面的 Input 组件可以根据 type 属性显示不同的文本框:

可以使用 .prop() 方法验证文本框的 type 属性:

可以看到, .prop() 方法帮助我们验证是否正确设置了文本框的 type 属性。

总结

在本文中, 我们介绍了如何使用 Enzyme 测试组件的文本内容和样式。通过 .text(), .html(), .contains(), .hasClass() 和 .prop() 方法, 可以很好的验证组件是否正确的渲染了文本和样式。Enzyme 是一个非常强大的 React 组件测试工具, 在组件开发和测试中非常实用。

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

纠错
反馈