React
本指南介绍如何使用 Rstest 测试 React 应用和组件。Rstest 支持在多种场景中测试 React:
- Node(使用 happy-dom 或 jsdom):在 Node.js 中使用模拟 DOM 进行快速、轻量的测试
- SSR(服务端渲染):在纯 Node.js 环境中测试服务端渲染函数
- 浏览器模式:使用 Playwright 进行真实浏览器测试,获得准确的 DOM 行为
Node 测试
基于 Node 的测试使用 DOM 模拟器如 happy-dom 或 jsdom 在 Node.js 中提供 DOM 环境。这种方式更快,适用于大多数组件测试场景。
快速开始
1. 安装依赖
2. 配置 rstest
创建 rstest.config.ts:
rstest.config.ts
3. 设置测试匹配器(可选)
如需使用 jest-dom 匹配器增强 DOM 断言,创建一个 setup 文件:
rstest.setup.ts
然后添加到配置中:
rstest.config.ts
4. 编写第一个测试
src/App.test.tsx
复用 Rsbuild 配置
如果你的项目已经使用 Rsbuild,可以通过 @rstest/adapter-rsbuild 复用现有配置:
rstest.config.ts
这将自动继承你的 Rsbuild 插件、别名和其他构建配置。
测试组件
使用 @testing-library/react 渲染和查询组件:
src/Counter.test.tsx
模拟模块
使用 rs.mock() 模拟依赖:
src/UserProfile.test.tsx
SSR 测试
Rstest 支持测试 React 服务端渲染(SSR)场景。你可以使用 react-dom/server 测试服务端渲染函数。
示例
首先,创建一个服务端渲染函数:
src/index.server.tsx
然后测试它:
test/ssr.test.ts
SSR 测试在 Node.js 环境中运行,不需要 DOM 模拟器,使用默认的 testEnvironment: 'node' 设置即可。
浏览器模式测试
对于需要真实浏览器行为的场景(例如 CSS 渲染、Web API、视觉测试),使用 Rstest 的浏览器模式配合 Playwright。
详细的配置和使用说明请参阅浏览器测试 - 框架指南。
建议:
- 使用 Node 测试 进行单元测试、逻辑密集型组件和快速反馈
- 使用 浏览器模式 进行集成测试、视觉行为测试以及需要真实浏览器 API 的场景
示例项目
- react - 使用 happy-dom 的 React 测试(包含组件、Hook 和 SSR 测试)
- react-rsbuild - 使用 Rsbuild adapter 的 React 测试
- browser-react - 浏览器模式下的 React 测试