Просмотр исходного кода

✅ test(api): 更新Agora Token API集成测试

- 替换createTestClient为testClient以支持类型安全的API测试
- 重构测试客户端创建逻辑,确保正确访问agoraApiRoutes的v1版本

♻️ refactor(agora): 优化AgoraTokenService配置检查

- 修改环境检查逻辑,仅在生产环境强制验证AGORA_APP_ID和AGORA_APP_SECRET
- 允许测试环境中跳过配置检查,便于单元测试执行
yourname 4 месяцев назад
Родитель
Сommit
2dd54a2f1e

+ 6 - 3
src/server/api/agora/__tests__/agora-token.integration.test.ts

@@ -1,6 +1,6 @@
 import { describe, test, expect, beforeAll, afterAll, vi } from 'vitest'
-import { createTestClient } from 'hono/testing'
-import app from '../index'
+import { testClient } from 'hono/testing'
+import { agoraApiRoutes } from '@/server/api'
 import { AgoraTokenService } from '@/server/modules/agora/agora-token.service'
 
 // 模拟AgoraTokenService
@@ -20,13 +20,16 @@ vi.mock('@/server/modules/agora/agora-token.service', () => ({
 }))
 
 describe('Agora Token API 集成测试', () => {
-  const client = createTestClient(app)
+  let client: ReturnType<typeof testClient<typeof agoraApiRoutes>>['api']['v1']
 
   beforeAll(() => {
     // 设置测试环境变量
     process.env.AGORA_APP_ID = 'test-app-id'
     process.env.AGORA_APP_SECRET = 'test-app-secret'
     process.env.AGORA_TOKEN_EXPIRY = '3600'
+
+    // 创建测试客户端
+    client = testClient(agoraApiRoutes).api.v1
   })
 
   afterAll(() => {

+ 2 - 1
src/server/modules/agora/agora-token.service.ts

@@ -10,7 +10,8 @@ export class AgoraTokenService {
     this.appSecret = process.env.AGORA_APP_SECRET || ''
     this.tokenExpiry = parseInt(process.env.AGORA_TOKEN_EXPIRY || '3600')
 
-    if (!this.appId || !this.appSecret) {
+    // 在生产环境中检查配置,测试环境中允许为空
+    if (process.env.NODE_ENV === 'production' && (!this.appId || !this.appSecret)) {
       throw new Error('Agora配置缺失:请设置AGORA_APP_ID和AGORA_APP_SECRET环境变量')
     }
   }