|
@@ -0,0 +1,45 @@
|
|
|
|
|
+import { describe, it, expect, vi } from 'vitest';
|
|
|
|
|
+import { render, screen } from '@testing-library/react';
|
|
|
|
|
+import '@testing-library/jest-dom';
|
|
|
|
|
+import { LoginPage } from '../../src/components/LoginPage';
|
|
|
|
|
+import { TestWrapper } from '../test-utils';
|
|
|
|
|
+
|
|
|
|
|
+// Mock useAuth钩子
|
|
|
|
|
+const mockLogin = vi.fn();
|
|
|
|
|
+const mockNavigate = vi.fn();
|
|
|
|
|
+
|
|
|
|
|
+vi.mock('../../src/hooks/AuthProvider', () => ({
|
|
|
|
|
+ useAuth: () => ({
|
|
|
|
|
+ login: mockLogin,
|
|
|
|
|
+ user: null,
|
|
|
|
|
+ token: null,
|
|
|
|
|
+ isAuthenticated: false,
|
|
|
|
|
+ isLoading: false,
|
|
|
|
|
+ logout: vi.fn(),
|
|
|
|
|
+ }),
|
|
|
|
|
+}));
|
|
|
|
|
+
|
|
|
|
|
+vi.mock('react-router', () => ({
|
|
|
|
|
+ useNavigate: () => mockNavigate,
|
|
|
|
|
+}));
|
|
|
|
|
+
|
|
|
|
|
+// Mock toast
|
|
|
|
|
+vi.mock('sonner', () => ({
|
|
|
|
|
+ toast: {
|
|
|
|
|
+ success: vi.fn(),
|
|
|
|
|
+ error: vi.fn(),
|
|
|
|
|
+ }
|
|
|
|
|
+}));
|
|
|
|
|
+
|
|
|
|
|
+describe('LoginPage 简单测试', () => {
|
|
|
|
|
+ it('应该正确渲染登录页面标题', () => {
|
|
|
|
|
+ render(<LoginPage />, { wrapper: TestWrapper });
|
|
|
|
|
+ expect(screen.getByText('管理后台登录')).toBeInTheDocument();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ it('应该包含用户名和密码输入字段', () => {
|
|
|
|
|
+ render(<LoginPage />, { wrapper: TestWrapper });
|
|
|
|
|
+ expect(screen.getByPlaceholderText('请输入用户名')).toBeInTheDocument();
|
|
|
|
|
+ expect(screen.getByPlaceholderText('请输入密码')).toBeInTheDocument();
|
|
|
|
|
+ });
|
|
|
|
|
+});
|