简介
该@testing-library
系列软件包帮助您以以用户为中心的方式测试 UI 组件。
问题
您希望编写可维护的测试,让您对组件是否为用户正常工作充满信心。为了实现此目标,您希望测试避免包含实现细节,这样组件的重构(对实现的更改,但功能不变)就不会破坏测试,并减缓您和团队的速度。
解决方案
核心库 DOM Testing Library
是一种轻量级解决方案,用于通过查询和交互 DOM 节点来测试网页(无论是在 JSDOM
/Jest 模拟,还是在浏览器中)。它提供的核心工具包括以类似于用户在页面上查找元素的方式查询 DOM 中的节点。这样,该库可以帮助确保您的测试能为您提供信心,让您相信您的应用程序在真实用户使用时也能正常工作。
核心库已经被包装,为多个框架提供了符合人体工程学设计的 API,包括 React、Angular 和 Vue。还存在一个插件,用于在 Cypress 中对端到端测试使用测试库查询,以及一个适用于 React Native 的实现。
该库不是什么
- 测试运行程序或框架
- 特定于测试框架
DOM Testing Library
适用于任何提供 DOM API 的环境,例如 Jest、Mocha + JSDOM 或真实浏览器。
在使用测试库时,您应该避免什么
测试库鼓励您避免测试 实现细节,例如您正在测试的组件的内部结构(尽管仍然可以做到)。该库的 指导原则 强调专注于与用户与网页交互方式相似的测试。
您可能希望避免以下实现细节
- 组件的内部状态
- 组件的内部方法
- 组件的生命周期方法
- 子组件