Переглянути джерело

📝 docs(testing): 更新测试策略文档以反映新的测试结构

- 添加版本 2.6 记录,标记完成遗留测试文件迁移
- 更新 vitest 配置示例,展示多项目结构配置
- 更新更新日志,记录测试文件迁移完成

♻️ refactor(tests): 完成测试文件迁移到统一目录结构

- 将文件相关集成测试从 src/server/api/files/__tests__ 迁移到 tests/integration/server/files
- 将 MinIO 集成测试从 src/server/__integration_tests__ 迁移到 tests/integration/server/files
- 将文件服务单元测试从 src/server/modules/files/__tests__ 迁移到 tests/unit/server/modules/files
- 更新测试文件中的导入路径以适应新的目录结构
yourname 1 місяць тому
батько
коміт
bd2bbecb6e

+ 23 - 11
docs/architecture/testing-strategy.md

@@ -3,6 +3,7 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
+| 2.6 | 2025-10-15 | 完成遗留测试文件迁移到统一的tests目录结构 | Winston |
 | 2.5 | 2025-10-14 | 更新测试文件位置到统一的tests目录结构 | Claude |
 | 2.4 | 2025-09-20 | 更新测试策略与主架构文档版本一致 | Winston |
 
@@ -43,18 +44,28 @@
 // vitest.config.ts - 开发环境配置
 export default defineConfig({
   test: {
-    environment: 'node',
-    include: ['src/**/__tests__/**', 'src/**/__integration_tests__/**'],
-    setupFiles: ['./src/test/setup.ts'],
-    coverage: {
-      provider: 'v8',
-      thresholds: {
-        branches: 70,
-        functions: 70,
-        lines: 70,
-        statements: 70
+    projects: [
+      // Node.js 环境项目 - 后端测试
+      {
+        test: {
+          include: [
+            'tests/unit/server/**/*.test.{ts,js}',
+            'tests/integration/server/**/*.test.{ts,js}'
+          ],
+          // ... 其他配置
+        }
+      },
+      // Happy DOM 环境项目 - 前端组件测试
+      {
+        test: {
+          include: [
+            'tests/unit/client/**/*.test.{ts,js,tsx,jsx}',
+            'tests/integration/client/**/*.test.{ts,js,tsx,jsx}'
+          ],
+          // ... 其他配置
+        }
       }
-    }
+    ]
   }
 });
 ```
@@ -272,6 +283,7 @@ describe('UserService', () => {
 ### 更新日志
 | 日期 | 版本 | 描述 |
 |------|------|------|
+| 2025-10-15 | 2.6 | 完成遗留测试文件迁移到统一的tests目录结构 |
 | 2025-10-14 | 2.5 | 重构测试文件结构,统一到tests目录 |
 | 2025-09-20 | 2.4 | 更新版本与主架构文档一致 |
 | 2025-09-19 | 1.0 | 初始版本,基于现有测试基础设施 |

+ 0 - 0
src/server/api/files/__tests__/files.integration.test.ts → tests/integration/server/files/files.integration.test.ts


+ 0 - 0
src/server/__integration_tests__/minio.integration.test.ts → tests/integration/server/files/minio.integration.test.ts


+ 6 - 6
src/server/modules/files/__tests__/file.service.test.ts → tests/unit/server/modules/files/file.service.test.ts

@@ -1,12 +1,12 @@
 import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
 import { DataSource } from 'typeorm';
-import { FileService } from '../file.service';
-import { File } from '../file.entity';
-import { MinioService } from '../minio.service';
+import { FileService } from '@/server/modules/files/file.service';
+import { File } from '@/server/modules/files/file.entity';
+import { MinioService } from '@/server/modules/files/minio.service';
 import { logger } from '@/server/utils/logger';
 
 // Mock dependencies
-vi.mock('../minio.service');
+vi.mock('@/server/modules/files/minio.service');
 vi.mock('@/server/utils/logger');
 vi.mock('uuid', () => ({
   v4: () => 'test-uuid-123'
@@ -58,7 +58,7 @@ describe('FileService', () => {
       vi.mocked(MinioService).mockImplementation(() => ({
         generateUploadPolicy: mockGenerateUploadPolicy
       } as unknown as MinioService));
-      
+
       const fileService = new FileService(mockDataSource);
 
       // Mock GenericCrudService methods
@@ -88,7 +88,7 @@ describe('FileService', () => {
       vi.mocked(MinioService).mockImplementation(() => ({
         generateUploadPolicy: mockGenerateUploadPolicy
       } as unknown as MinioService));
-      
+
       const fileService = new FileService(mockDataSource);
 
       await expect(fileService.createFile(mockFileData)).rejects.toThrow('文件创建失败');

+ 1 - 1
src/server/modules/files/__tests__/minio.service.test.ts → tests/unit/server/modules/files/minio.service.test.ts

@@ -1,5 +1,5 @@
 import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
-import { MinioService } from '../minio.service';
+import { MinioService } from '@/server/modules/files/minio.service';
 import { Client } from 'minio';
 import { logger } from '@/server/utils/logger';