跳至主要内容

React 测试库

React 测试库DOM 测试库 的基础上构建,通过添加用于处理 React 组件的 API 来扩展其功能。

安装

要开始使用 React 测试库,您需要将其与它的 peerDependency @testing-library/dom 一起安装。

npm install --save-dev @testing-library/react @testing-library/dom

使用 TypeScript

要获得完整的类型覆盖范围,您还需要安装 reactreact-dom 的类型。

npm install --save-dev @testing-library/react @testing-library/dom @types/react @types/react-dom

问题

您希望为 React 组件编写可维护的测试。作为此目标的一部分,您希望测试避免包含组件的实现细节,而是专注于让测试提供您预期的信心。作为此目标的一部分,您希望测试基础在长期内保持可维护性,这样组件的重构(对实现的更改,而非功能更改)就不会破坏您的测试,减慢您和团队的速度。

此解决方案

React 测试库 是用于测试 React 组件的非常轻量级解决方案。它在 react-domreact-dom/test-utils 的基础上提供了轻量级实用程序功能,以鼓励更好的测试实践。它的主要指导原则是

您的测试越类似于软件的使用方式,它们就能为您提供越多的信心。

因此,与处理渲染的 React 组件实例不同,您的测试将与实际的 DOM 节点一起工作。此库提供的实用程序有助于以用户相同的方式查询 DOM。通过标签文本查找表单元素(就像用户一样),通过文本查找链接和按钮(就像用户一样)。它还公开了一种推荐的方式,通过 data-testid 查找元素,作为文本内容和标签没有意义或不切实际的元素的“备用方法”。

此库鼓励您的应用程序更加易于访问,并允许您将测试更接近于用户使用组件的方式,从而让您的测试更有信心,您的应用程序在真实用户使用时能够正常工作。

此库是 Enzyme 的替代品。虽然您可以使用 Enzyme 本身遵循这些指南,但由于 Enzyme 提供了所有额外的实用程序(这些实用程序有助于测试实现细节),因此强制执行这些指南更加困难。有关此内容的更多信息,请参阅 常见问题解答

此库不是什么:

  1. 测试运行器或框架
  2. 特定于测试框架(尽管我们推荐 Jest 作为我们的首选,但该库适用于任何框架。请参阅 不使用 Jest

注意:此库构建在 DOM 测试库 之上,查询背后的逻辑大部分都来自该库。

教程

观看下面的“什么是 React 测试库?”视频,了解该库的介绍。

what is react testing library

此外,请不要错过此 React 测试库教程