test-render.tsx 1021 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { ReactNode } from 'react';
  2. import { BrowserRouter } from 'react-router-dom';
  3. import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
  4. import { ThemeProvider } from 'next-themes';
  5. /**
  6. * 创建测试用的QueryClient
  7. */
  8. export function createTestQueryClient() {
  9. return new QueryClient({
  10. defaultOptions: {
  11. queries: {
  12. retry: false,
  13. gcTime: 0,
  14. },
  15. mutations: {
  16. retry: false,
  17. },
  18. }
  19. });
  20. }
  21. /**
  22. * 测试渲染器的包装组件
  23. */
  24. export function TestWrapper({ children }: { children: ReactNode }) {
  25. const queryClient = createTestQueryClient();
  26. return (
  27. <QueryClientProvider client={queryClient}>
  28. <ThemeProvider attribute="class" defaultTheme="light">
  29. <BrowserRouter>
  30. {children}
  31. </BrowserRouter>
  32. </ThemeProvider>
  33. </QueryClientProvider>
  34. );
  35. }
  36. /**
  37. * 等待组件更新完成
  38. */
  39. export async function waitForUpdate(delay = 0) {
  40. await new Promise(resolve => setTimeout(resolve, delay));
  41. }