瀏覽代碼

✅ test(rtm-manager-adapter): 完善RTM管理器适配器测试用例

- 添加全局fetch模拟函数及响应处理
- 在构造函数中添加证书参数(mockCertificate)
- 为所有测试用例添加token获取模拟
- 验证RTM客户端创建时包含token参数
- 完善join方法的重复加入错误测试场景
- 增强事件处理和连接状态测试覆盖率
yourname 2 月之前
父節點
當前提交
65715d9619
共有 1 個文件被更改,包括 48 次插入3 次删除
  1. 48 3
      packages/stt-sdk-core/tests/managers/rtm-manager-adapter.test.ts

+ 48 - 3
packages/stt-sdk-core/tests/managers/rtm-manager-adapter.test.ts

@@ -3,12 +3,24 @@ import { RtmManagerAdapter } from '../../src/managers/rtm-manager-adapter'
 import { SttError } from '../../src/core/stt-error'
 import AgoraRTM from 'agora-rtm'
 
+// 模拟全局fetch
+global.fetch = vi.fn()
+
+// 模拟fetch响应
+const mockFetchResponse = (data: any) => {
+  return {
+    ok: true,
+    json: async () => ({ data }),
+  }
+}
+
 describe('RtmManagerAdapter', () => {
   let manager: RtmManagerAdapter
   const mockAppId = 'test-app-id'
+  const mockCertificate = 'test-certificate'
 
   beforeEach(() => {
-    manager = new RtmManagerAdapter(mockAppId)
+    manager = new RtmManagerAdapter(mockAppId, mockCertificate)
   })
 
   afterEach(async () => {
@@ -25,6 +37,9 @@ describe('RtmManagerAdapter', () => {
         userName: 'Test User',
       }
 
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join(config)
 
       expect(manager.isJoined).toBe(true)
@@ -37,8 +52,8 @@ describe('RtmManagerAdapter', () => {
         userName: 'Test User',
       })
 
-      // 验证 RTM 客户端被正确创建
-      expect(AgoraRTM.RTM).toHaveBeenCalledWith(mockAppId, 'test-user', {})
+      // 验证 RTM 客户端被正确创建(包含token)
+      expect(AgoraRTM.RTM).toHaveBeenCalledWith(mockAppId, 'test-user', { token: 'test-token' })
     })
 
     it('should throw error when config is invalid', async () => {
@@ -61,6 +76,9 @@ describe('RtmManagerAdapter', () => {
         userName: 'Test User',
       }
 
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join(config)
 
       await expect(manager.join(config)).rejects.toThrow(SttError)
@@ -93,6 +111,9 @@ describe('RtmManagerAdapter', () => {
         userName: 'Test User',
       }
 
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join(config)
 
       expect(connectedHandler).toHaveBeenCalledTimes(1)
@@ -109,6 +130,9 @@ describe('RtmManagerAdapter', () => {
         userName: 'Test User',
       }
 
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join(config)
 
       // 获取创建的 RTM 客户端实例
@@ -122,6 +146,9 @@ describe('RtmManagerAdapter', () => {
 
   describe('updateSttData', () => {
     beforeEach(async () => {
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join({
         channel: 'test-channel',
         userId: 'test-user',
@@ -194,6 +221,9 @@ describe('RtmManagerAdapter', () => {
 
   describe('updateLanguages', () => {
     beforeEach(async () => {
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join({
         channel: 'test-channel',
         userId: 'test-user',
@@ -265,6 +295,9 @@ describe('RtmManagerAdapter', () => {
 
   describe('acquireLock', () => {
     beforeEach(async () => {
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join({
         channel: 'test-channel',
         userId: 'test-user',
@@ -305,6 +338,9 @@ describe('RtmManagerAdapter', () => {
 
   describe('releaseLock', () => {
     beforeEach(async () => {
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join({
         channel: 'test-channel',
         userId: 'test-user',
@@ -348,6 +384,9 @@ describe('RtmManagerAdapter', () => {
       // 重置模拟调用次数
       vi.clearAllMocks()
 
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join({
         channel: 'test-channel',
         userId: 'test-user',
@@ -378,6 +417,9 @@ describe('RtmManagerAdapter', () => {
     })
 
     it('should remove all event listeners', async () => {
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join({
         channel: 'test-channel',
         userId: 'test-user',
@@ -397,6 +439,9 @@ describe('RtmManagerAdapter', () => {
 
   describe('event handling', () => {
     beforeEach(async () => {
+      // 模拟fetch返回token
+      vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
+
       await manager.join({
         channel: 'test-channel',
         userId: 'test-user',