从v5到v6:React Router测试环境适配踩坑
最近项目升级了React Router到v6版本,过程中在测试环境遇到了不少坑,特此记录。
问题背景
项目从React Router v5升级到v6后,原有的测试用例全部报错。主要问题集中在MemoryRouter和Route组件的使用方式变化上。
核心踩坑点
1. MemoryRouter配置错误
// v5写法 - 报错
const wrapper = render(<MemoryRouter><App /></MemoryRouter>);
// v6正确写法
const wrapper = render(
<MemoryRouter initialEntries={['/home']}>
<App />
</MemoryRouter>
);
2. Route组件语法变更
// v5写法 - 报错
<Route path="/user/:id" component={UserComponent} />
// v6正确写法
<Route path="/user/:id" element={<UserComponent />} />
3. 测试环境配置 需要在setupTests.js中添加:
import '@testing-library/jest-dom';
import { configure } from '@testing-library/react';
configure({ testIdAttribute: 'data-testid' });
复现步骤
- 创建新项目使用v6
- 运行现有测试用例
- 观察控制台报错信息
- 逐一修复Route和Router相关配置
总结
升级过程中需要仔细阅读官方文档,特别是测试部分的变更说明。建议在升级前先备份代码,逐步迁移。

讨论