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

✅ test(files): improve minio service test environment handling

- replace direct process.env mock with vi.stubEnv for better test isolation
- add beforeEach/afterEach hooks to manage environment variables
- update SSL test case to use stubEnv instead of direct env manipulation
- ensure proper cleanup of environment variables between tests
yourname 2 месяцев назад
Родитель
Сommit
76ddd8b632
1 измененных файлов с 17 добавлено и 15 удалено
  1. 17 15
      src/server/modules/files/__tests__/minio.service.test.ts

+ 17 - 15
src/server/modules/files/__tests__/minio.service.test.ts

@@ -6,18 +6,20 @@ import { logger } from '@/server/utils/logger';
 // Mock dependencies
 vi.mock('minio');
 vi.mock('@/server/utils/logger');
-vi.mock('node:process', () => ({
-  default: {
-    env: {
-      MINIO_HOST: 'localhost',
-      MINIO_PORT: '9000',
-      MINIO_USE_SSL: 'false',
-      MINIO_ACCESS_KEY: 'minioadmin',
-      MINIO_SECRET_KEY: 'minioadmin',
-      MINIO_BUCKET_NAME: 'test-bucket'
-    }
-  }
-}));
+
+// Mock process.env using vi.stubEnv for proper isolation
+beforeEach(() => {
+  vi.stubEnv('MINIO_HOST', 'localhost');
+  vi.stubEnv('MINIO_PORT', '9000');
+  vi.stubEnv('MINIO_USE_SSL', 'false');
+  vi.stubEnv('MINIO_ACCESS_KEY', 'minioadmin');
+  vi.stubEnv('MINIO_SECRET_KEY', 'minioadmin');
+  vi.stubEnv('MINIO_BUCKET_NAME', 'test-bucket');
+});
+
+afterEach(() => {
+  vi.unstubAllEnvs();
+});
 
 describe('MinioService', () => {
   let minioService: MinioService;
@@ -170,9 +172,9 @@ describe('MinioService', () => {
     });
 
     it('should generate correct file URL with SSL', async () => {
-      // Create new instance with SSL
-      vi.mocked(process.env).MINIO_USE_SSL = 'true';
-      vi.mocked(process.env).MINIO_PORT = '443';
+      // Create new instance with SSL by temporarily overriding env vars
+      vi.stubEnv('MINIO_USE_SSL', 'true');
+      vi.stubEnv('MINIO_PORT', '443');
 
       const sslService = new MinioService();
       const url = sslService.getFileUrl('test-bucket', 'file.txt');