跳过到主要内容

简介

@testing-library系列软件包帮助您以以用户为中心的方式测试 UI 组件。

您的测试越类似于软件的使用方式,它们就能给您越高的信心。

问题

您希望编写可维护的测试,让您对组件是否为用户正常工作充满信心。为了实现此目标,您希望测试避免包含实现细节,这样组件的重构(对实现的更改,但功能不变)就不会破坏测试,并减缓您和团队的速度。

解决方案

核心库 DOM Testing Library 是一种轻量级解决方案,用于通过查询和交互 DOM 节点来测试网页(无论是在 JSDOM/Jest 模拟,还是在浏览器中)。它提供的核心工具包括以类似于用户在页面上查找元素的方式查询 DOM 中的节点。这样,该库可以帮助确保您的测试能为您提供信心,让您相信您的应用程序在真实用户使用时也能正常工作。

核心库已经被包装,为多个框架提供了符合人体工程学设计的 API,包括 ReactAngularVue。还存在一个插件,用于在 Cypress 中对端到端测试使用测试库查询,以及一个适用于 React Native 的实现。

该库不是什么

  1. 测试运行程序或框架
  2. 特定于测试框架

DOM Testing Library 适用于任何提供 DOM API 的环境,例如 Jest、Mocha + JSDOM 或真实浏览器。

在使用测试库时,您应该避免什么

测试库鼓励您避免测试 实现细节,例如您正在测试的组件的内部结构(尽管仍然可以做到)。该库的 指导原则 强调专注于与用户与网页交互方式相似的测试。

您可能希望避免以下实现细节

  1. 组件的内部状态
  2. 组件的内部方法
  3. 组件的生命周期方法
  4. 子组件