test(web): 添加 renderWithProviders — MemoryRouter + AntD ConfigProvider 包裹器

This commit is contained in:
iven
2026-05-03 23:04:19 +08:00
parent 0e789b530a
commit c93ae0bc66
2 changed files with 51 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
import { describe, it, expect } from 'vitest';
import { screen } from '@testing-library/react';
import { renderWithProviders } from './renderWithProviders';
function DummyPage() {
return <div data-testid="dummy">Hello Test</div>;
}
describe('renderWithProviders', () => {
it('renders child component', () => {
renderWithProviders(<DummyPage />);
expect(screen.getByTestId('dummy')).toHaveTextContent('Hello Test');
});
it('wraps with MemoryRouter — Link renders without error', () => {
function PageWithLink() {
return (
<div>
<a href="/test">Go</a>
</div>
);
}
renderWithProviders(<PageWithLink />);
expect(screen.getByText('Go')).toHaveAttribute('href', '/test');
});
});

View File

@@ -0,0 +1,25 @@
import { ReactElement } from 'react';
import { render, RenderOptions } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
import { ConfigProvider } from 'antd';
import zhCN from 'antd/locale/zh_CN';
interface CustomRenderOptions extends Omit<RenderOptions, 'wrapper'> {
route?: string;
}
export function renderWithProviders(ui: ReactElement, options: CustomRenderOptions = {}) {
const { route = '/', ...renderOptions } = options;
function Wrapper({ children }: { children: React.ReactNode }) {
return (
<MemoryRouter initialEntries={[route]}>
<ConfigProvider locale={zhCN}>{children}</ConfigProvider>
</MemoryRouter>
);
}
return render(ui, { wrapper: Wrapper, ...renderOptions });
}
export * from '@testing-library/react';