import { vi } from 'vitest' // 全局模拟配置 - 模拟真实的 Agora RTM SDK vi.mock('agora-rtm', () => { const mockRTM = { RTM: vi.fn((appId: string, userId: string, config: any) => ({ login: vi.fn().mockResolvedValue(undefined), logout: vi.fn().mockResolvedValue(undefined), subscribe: vi.fn().mockResolvedValue(undefined), unsubscribe: vi.fn().mockResolvedValue(undefined), addEventListener: vi.fn(), removeEventListener: vi.fn(), presence: { setState: vi.fn().mockResolvedValue(undefined), whoNow: vi.fn().mockResolvedValue({ totalOccupancy: 1 }), }, storage: { setChannelMetadata: vi.fn().mockResolvedValue(undefined), removeChannelMetadata: vi.fn().mockResolvedValue(undefined), }, lock: { setLock: vi.fn().mockResolvedValue(undefined), acquireLock: vi.fn().mockResolvedValue(undefined), releaseLock: vi.fn().mockResolvedValue(undefined), getLock: vi.fn().mockResolvedValue({ lockDetails: [] }), }, })), } // 返回包含默认导出的对象 return { default: mockRTM, ...mockRTM, } }) // 模拟 fetch API const mockFetch = vi.fn() global.fetch = mockFetch // 设置默认的 fetch 响应 mockFetch.mockResolvedValue({ ok: true, status: 200, json: vi.fn().mockResolvedValue({ tokenName: 'test-token', taskId: 'test-task-id', }), }) // 全局测试配置 global.console = { ...console, debug: vi.fn(), log: vi.fn(), error: vi.fn(), warn: vi.fn(), }