Explorar o código

♻️ refactor(test): 重构用户集成测试中的CRUD服务mock

- 将独立的CRUD服务mock函数重构为统一的mockCrudService对象
- 在beforeEach中集中初始化mock返回值,提高测试可维护性
- 统一测试中CRUD服务方法的调用方式,增强代码一致性
yourname hai 2 meses
pai
achega
7eea2c4046
Modificáronse 1 ficheiros con 18 adicións e 14 borrados
  1. 18 14
      src/server/api/__integration_tests__/users.integration.test.ts

+ 18 - 14
src/server/api/__integration_tests__/users.integration.test.ts

@@ -27,20 +27,16 @@ vi.mock('../../middleware/auth.middleware', () => ({
 }));
 
 // Mock 通用CRUD服务
-const mockGetList = vi.fn().mockResolvedValue([[], 0]);
-const mockGetById = vi.fn().mockResolvedValue(null);
-const mockCreate = vi.fn().mockResolvedValue({ id: 1, username: 'testuser' });
-const mockUpdate = vi.fn().mockResolvedValue({ affected: 1 });
-const mockDelete = vi.fn().mockResolvedValue({ affected: 1 });
+const mockCrudService = {
+  getList: vi.fn(),
+  getById: vi.fn(),
+  create: vi.fn(),
+  update: vi.fn(),
+  delete: vi.fn()
+};
 
 vi.mock('../../utils/generic-crud.service', () => ({
-  GenericCrudService: vi.fn().mockImplementation(() => ({
-    getList: mockGetList,
-    getById: mockGetById,
-    create: mockCreate,
-    update: mockUpdate,
-    delete: mockDelete
-  }))
+  GenericCrudService: vi.fn().mockImplementation(() => mockCrudService)
 }));
 
 describe('Users API Integration Tests', () => {
@@ -54,6 +50,13 @@ describe('Users API Integration Tests', () => {
     const { authMiddleware } = await import('../../middleware/auth.middleware');
     vi.mocked(authMiddleware).mockImplementation((_c: any, next: any) => next());
 
+    // 重置CRUD服务mock
+    mockCrudService.getList.mockResolvedValue([[], 0]);
+    mockCrudService.getById.mockResolvedValue(null);
+    mockCrudService.create.mockResolvedValue({ id: 1, username: 'testuser' });
+    mockCrudService.update.mockResolvedValue({ affected: 1 });
+    mockCrudService.delete.mockResolvedValue({ affected: 1 });
+
     // 动态导入用户路由
     const userRoutes = await import('../users/index');
 
@@ -104,7 +107,8 @@ describe('Users API Integration Tests', () => {
           updatedAt: new Date('2024-01-02T00:00:00.000Z')
         }
       ];
-      mockGetList.mockResolvedValue([mockUsers, 2]);
+
+      mockCrudService.getList.mockResolvedValue([mockUsers, 2]);
 
       const response = await apiClient.get('/?page=1&pageSize=10');
 
@@ -130,7 +134,7 @@ describe('Users API Integration Tests', () => {
     });
 
     it('应该验证分页参数', async () => {
-      mockGetList.mockResolvedValue([[], 0]);
+      mockCrudService.getList.mockResolvedValue([[], 0]);
       const response = await apiClient.get('/?page=0&pageSize=0');
 
       expect(response.status).toBe(400);