ReactJS - findRenderedDOMComponentWithClass()
在 ReactJS 中,findRenderedDOMComponentWithClass() 方法用于测试。它帮助我们在 DOM 中找到具有特定 CSS 类的渲染组件。此方法主要用于测试 React 组件。
在为我们的 React 组件编写测试时,我们可以检查具有给定 CSS 类的组件是否出现在渲染输出中。这正是 findRenderedDOMComponentWithClass() 所做的。因此,我们将渲染的组件和我们想要的 CSS 类传递给此函数。然后返回具有该类的第一个 DOM 元素。
请记住,此函数在以前版本的 React 和测试框架中更常用。更多当前测试库可以提供不同的方法来实现相同的目标。
语法
findRenderedDOMComponentWithClass( tree, className )
参数
tree − 它是我们要在其中搜索的显示组件或组件树。它是从测试库接收的 React 组件的渲染输出。
className − 表示我们想要在树中找到的 CSS 类的字符串。该方法将搜索具有此特定类的 DOM 元素。
返回值
该方法将返回具有给定类的第一个 DOM 元素,允许我们使用其他操作或断言继续测试。
示例
示例 − 基本 React 应用
应用说明:这就像一个在网页上显示"Hello, React!"的网页。想象一下这是一张简单的贺卡。
测试说明 − 我们要确保贺卡的特定部分(段落)在那里。因此,我们使用工具来找到该部分并检查它是否是我们想要的。
App.js
import React from 'react'; import './App.css'; function App() { return ( <div className="app-container App"> <h1>Hello, React!</h1> <p className="app-paragraph">This is a simple React app.</p> </div> ); } export default App;
App.test.js
import { render } from '@testing-library/react'; import findRenderedDOMComponentWithClass from 'path-to-findRenderedDOMComponentWithClass'; import App from './App'; test('finds a paragraph with a specific class', () => { const { container } = render(<App />); const foundElement = findRenderedDOMComponentWithClass(container, 'app-paragraph'); // 现在我们可以基于 foundElement 做出断言或测试 });
输出

示例 − 带组件的 React 应用
应用说明 − 假设我们在应用中有一个网页,该网页有一个标题(页眉)和一个段落。它就像一个顶部有标题的小网站。
测试说明 − 我们要确保标题在那里。因此,我们使用工具来查找标题并检查它是否在正确的位置。
Header.js
import React from 'react'; function Header() { return <h1 className="header-title">Welcome to My App</h1>; } export default Header;
App.js
import React from 'react'; import Header from './Header'; import './App.css'; export default function App() { return ( <div className="app-container"> <Header /> <p className="app-paragraph">This app has a header component.</p> </div> ); }
App.test.js
import { render } from '@testing-library/react'; import findRenderedDOMComponentWithClass from 'path-to-findRenderedDOMComponentWithClass'; import App from './App'; test('finds a header with a specific class', () => { const { container } = render(<App />); const foundElement = findRenderedDOMComponentWithClass(container, 'header-title'); });
输出

示例 − 具有动态内容的 React 应用
应用说明 − 这就像一个可以显示不同消息的网页。它有点像一个可以显示变化信息的招牌。
测试说明 − 我们希望确保变化的消息存在。因此,我们使用工具来找到该部分并检查它是否显示正确的消息。
DynamicContent.js
import React from 'react'; function DynamicContent({ content }) { return <div className="dynamic-content">{content}</div>; } export default DynamicContent;
App.js
import React from 'react'; import DynamicContent from './DynamicContent'; import './App.css'; function App() { return ( <div className="app-container App"> <DynamicContent content="This content is dynamic!" /> <p className="app-paragraph">This app includes dynamic content.</p> </div> ); }
App.test.js
import { render } from '@testing-library/react'; import findRenderedDOMComponentWithClass from 'path-to-findRenderedDOMComponentWithClass'; import App from './App'; test('finds a dynamic content with a specific class', () => { const { container } = render(<App />); const foundElement = findRenderedDOMComponentWithClass(container, 'dynamic-content'); });
输出

摘要
此函数用于测试 React 组件。它帮助我们在运行测试时在 React 组件的最终结果中找到特定元素。假设我们有一张一群人的照片,我们想找到一个戴着红帽子的人,我们将使用此函数在照片中找到那个人。它是一个有用的测试工具,可以确保我们的组件按预期运行。