| import { describe, it, expect, vi, beforeEach } from 'vitest'; |
| import { render, screen } from '@testing-library/react'; |
| import { MemoryRouter } from 'react-router-dom'; |
| import PermissionRoute from './PermissionRoute'; |
| vi.mock('react-router-dom', async () => { |
| const actual = await vi.importActual('react-router-dom'); |
| Navigate: () => <div data-testid="navigate-mock">重定向到未授权页面</div>, |
| describe('PermissionRoute 组件', () => { |
| window.localStorage.clear(); |
| it('用户没有所需角色时应该重定向', () => { |
| window.localStorage.setItem('user', JSON.stringify({ role: 'user' })); |
| <PermissionRoute requiredRoles={['admin']}> |
| expect(screen.getByTestId('navigate-mock')).toBeInTheDocument(); |
| it('用户有所需角色时应该显示子组件', () => { |
| window.localStorage.setItem('user', JSON.stringify({ role: 'admin' })); |
| <PermissionRoute requiredRoles={['admin']}> |
| expect(screen.getByText('管理员内容')).toBeInTheDocument(); |