LoginPage-simple.test.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { describe, it, expect, vi } from 'vitest';
  2. import { render, screen } from '@testing-library/react';
  3. import '@testing-library/jest-dom';
  4. import { LoginPage } from '../../src/components/LoginPage';
  5. import { TestWrapper } from '../test-utils';
  6. // Mock useAuth钩子
  7. const mockLogin = vi.fn();
  8. const mockNavigate = vi.fn();
  9. vi.mock('../../src/hooks/AuthProvider', () => ({
  10. useAuth: () => ({
  11. login: mockLogin,
  12. user: null,
  13. token: null,
  14. isAuthenticated: false,
  15. isLoading: false,
  16. logout: vi.fn(),
  17. }),
  18. }));
  19. vi.mock('react-router', () => ({
  20. useNavigate: () => mockNavigate,
  21. }));
  22. // Mock toast
  23. vi.mock('sonner', () => ({
  24. toast: {
  25. success: vi.fn(),
  26. error: vi.fn(),
  27. }
  28. }));
  29. describe('LoginPage 简单测试', () => {
  30. it('应该正确渲染登录页面标题', () => {
  31. render(<LoginPage />, { wrapper: TestWrapper });
  32. expect(screen.getByText('管理后台登录')).toBeInTheDocument();
  33. });
  34. it('应该包含用户名和密码输入字段', () => {
  35. render(<LoginPage />, { wrapper: TestWrapper });
  36. expect(screen.getByPlaceholderText('请输入用户名')).toBeInTheDocument();
  37. expect(screen.getByPlaceholderText('请输入密码')).toBeInTheDocument();
  38. });
  39. });