2
0

setup.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { vi } from 'vitest'
  2. // 全局模拟配置 - 模拟真实的 Agora RTM SDK
  3. vi.mock('agora-rtm', () => {
  4. const mockRTM = {
  5. RTM: vi.fn((appId: string, userId: string, config: any) => ({
  6. login: vi.fn().mockResolvedValue(undefined),
  7. logout: vi.fn().mockResolvedValue(undefined),
  8. subscribe: vi.fn().mockResolvedValue(undefined),
  9. unsubscribe: vi.fn().mockResolvedValue(undefined),
  10. addEventListener: vi.fn(),
  11. removeEventListener: vi.fn(),
  12. presence: {
  13. setState: vi.fn().mockResolvedValue(undefined),
  14. whoNow: vi.fn().mockResolvedValue({ totalOccupancy: 1 }),
  15. },
  16. storage: {
  17. setChannelMetadata: vi.fn().mockResolvedValue(undefined),
  18. removeChannelMetadata: vi.fn().mockResolvedValue(undefined),
  19. },
  20. lock: {
  21. setLock: vi.fn().mockResolvedValue(undefined),
  22. acquireLock: vi.fn().mockResolvedValue(undefined),
  23. releaseLock: vi.fn().mockResolvedValue(undefined),
  24. getLock: vi.fn().mockResolvedValue({ lockDetails: [] }),
  25. },
  26. })),
  27. }
  28. // 返回包含默认导出的对象
  29. return {
  30. default: mockRTM,
  31. ...mockRTM,
  32. }
  33. })
  34. // 模拟 fetch API
  35. const mockFetch = vi.fn()
  36. global.fetch = mockFetch
  37. // 设置默认的 fetch 响应
  38. mockFetch.mockResolvedValue({
  39. ok: true,
  40. status: 200,
  41. json: vi.fn().mockResolvedValue({
  42. tokenName: 'test-token',
  43. taskId: 'test-task-id',
  44. }),
  45. })
  46. // 全局测试配置
  47. global.console = {
  48. ...console,
  49. debug: vi.fn(),
  50. log: vi.fn(),
  51. error: vi.fn(),
  52. warn: vi.fn(),
  53. }