Chats.test.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { fireEvent, render, screen, waitFor } from '@testing-library/react';
  2. import { beforeEach, expect, it, vi } from 'vitest';
  3. import { history } from '@umijs/max';
  4. import ChatsPage from '@/pages/Chats';
  5. import { apiRequest } from '@/services/api';
  6. vi.mock('@/services/api', () => ({ apiRequest: vi.fn() }));
  7. beforeEach(() => vi.clearAllMocks());
  8. it('加载群列表并进入管理页', async () => {
  9. vi.mocked(apiRequest).mockResolvedValue({
  10. items: [
  11. {
  12. chat_id: '-100123',
  13. title: '测试运营群',
  14. username: 'ops_test',
  15. type: 'supergroup',
  16. accessible: true,
  17. member_count: 42,
  18. bot_status: 'administrator',
  19. },
  20. {
  21. chat_id: '-100456',
  22. title: '机器人已退出的群',
  23. type: 'supergroup',
  24. accessible: false,
  25. member_count: 8,
  26. bot_status: 'left',
  27. },
  28. ],
  29. total: 2,
  30. page: 1,
  31. page_size: 20,
  32. });
  33. render(<ChatsPage />);
  34. expect(await screen.findByText('测试运营群')).toBeInTheDocument();
  35. const manageButtons = screen.getAllByRole('button', { name: '管理' });
  36. fireEvent.click(manageButtons[0]);
  37. expect(history.push).toHaveBeenCalledWith('/chats/-100123');
  38. expect(manageButtons[1]).toBeDisabled();
  39. await waitFor(() => expect(apiRequest).toHaveBeenCalledTimes(1));
  40. });