Browse Source

✅ test(orders): 增强订单API集成测试的健壮性

- 为API响应处理添加状态码检查,避免在非成功状态下解析JSON
- 修复客户端请求参数格式,显式传递query对象
- 完善多租户订单查询和取消测试的错误处理逻辑
- 确保测试在不同响应状态下都能安全执行
yourname 1 tháng trước cách đây
mục cha
commit
1deaf50c41

+ 47 - 29
packages/orders-module-mt/tests/integration/user-orders-routes.integration.test.ts

@@ -56,7 +56,9 @@ describe('多租户用户订单管理API集成测试', () => {
       const tenant2Order = await testFactory.createTestOrder(otherTenantUser.id, { tenantId: 2 });
 
       // 使用租户1的用户查询订单列表
-      const response = await client.index.$get({}, {
+      const response = await client.index.$get({
+        query: {}
+      }, {
         headers: {
           'Authorization': `Bearer ${userToken}`
         }
@@ -64,13 +66,15 @@ describe('多租户用户订单管理API集成测试', () => {
 
 
       expect(response.status).toBe(200);
-      const data = await response.json();
-
-      // 应该只返回租户1的订单
-      expect(data.data).toHaveLength(1);
-      expect(data.data[0].tenantId).toBe(1);
-      expect(data.data[0].id).toBe(tenant1Order.id);
-    });
+      if(response.status === 200){
+        const data = await response.json();
+
+        // 应该只返回租户1的订单
+        expect(data.data).toHaveLength(1);
+        expect(data.data[0].tenantId).toBe(1);
+        expect(data.data[0].id).toBe(tenant1Order.id);
+      }
+      });
 
     it('不应该访问其他租户的订单详情', async () => {
       // 创建租户2的订单
@@ -116,19 +120,23 @@ describe('多租户用户订单管理API集成测试', () => {
       const otherUserOrder = await testFactory.createTestOrder(otherUser.id, { tenantId: 1 });
 
       // 使用当前用户查询订单列表
-      const response = await client.index.$get({}, {
+      const response = await client.index.$get({
+        query: {}
+      }, {
         headers: {
           'Authorization': `Bearer ${userToken}`
         }
       });
 
       expect(response.status).toBe(200);
-      const data = await response.json();
-
-      // 应该只返回当前用户的订单
-      expect(data.data).toHaveLength(1);
-      expect(data.data[0].userId).toBe(testUser.id);
-      expect(data.data[0].id).toBe(myOrder.id);
+      if (response.status === 200) {
+        const data = await response.json();
+
+        // 应该只返回当前用户的订单
+        expect(data.data).toHaveLength(1);
+        expect(data.data[0].userId).toBe(testUser.id);
+        expect(data.data[0].id).toBe(myOrder.id);
+      }
     });
 
     it('不应该访问其他用户的订单详情', async () => {
@@ -179,11 +187,13 @@ describe('多租户用户订单管理API集成测试', () => {
       });
 
       expect(response.status).toBe(201);
-      const createdOrder = await response.json();
+      if (response.status === 201) {
+        const createdOrder = await response.json();
 
-      // 验证租户ID已正确设置
-      expect(createdOrder.tenantId).toBe(1);
-      expect(createdOrder.userId).toBe(testUser.id);
+        // 验证租户ID已正确设置
+        expect(createdOrder.tenantId).toBe(1);
+        expect(createdOrder.userId).toBe(testUser.id);
+      }
     });
   });
 
@@ -210,10 +220,12 @@ describe('多租户用户订单管理API集成测试', () => {
       });
 
       expect(response.status).toBe(200);
-      const result = await response.json();
+      if (response.status === 200) {
+        const result = await response.json();
 
-      expect(result.success).toBe(true);
-      expect(result.message).toBe('订单取消成功');
+        expect(result.success).toBe(true);
+        expect(result.message).toBe('订单取消成功');
+      }
 
       // 验证订单状态已更新
       const dataSource = await IntegrationTestDatabase.getDataSource();
@@ -248,10 +260,12 @@ describe('多租户用户订单管理API集成测试', () => {
       });
 
       expect(response.status).toBe(200);
-      const result = await response.json();
+      if (response.status === 200) {
+        const result = await response.json();
 
-      expect(result.success).toBe(true);
-      expect(result.message).toBe('订单取消成功');
+        expect(result.success).toBe(true);
+        expect(result.message).toBe('订单取消成功');
+      }
 
       // 验证订单状态已更新
       const dataSource = await IntegrationTestDatabase.getDataSource();
@@ -287,9 +301,11 @@ describe('多租户用户订单管理API集成测试', () => {
 
       // 应该返回403,因为已发货订单不允许取消
       expect(response.status).toBe(403);
-      const result = await response.json();
+      if (response.status === 403) {
+        const result = await response.json();
 
-      expect(result.error).toBe('当前订单状态不允许取消');
+        expect(result.error).toBe('当前订单状态不允许取消');
+      }
     });
 
     it('应该拒绝取消不存在的订单', async () => {
@@ -308,9 +324,11 @@ describe('多租户用户订单管理API集成测试', () => {
 
       // 应该返回404
       expect(response.status).toBe(404);
-      const result = await response.json();
+      if (response.status === 404) {
+        const result = await response.json();
 
-      expect(result.error).toBe('订单不存在');
+        expect(result.error).toBe('订单不存在');
+      }
     });
 
     it('应该拒绝跨租户取消订单', async () => {