From 817b17bf9e3224139f1977e699dc634a66d63825 Mon Sep 17 00:00:00 2001 From: wangdl Date: Sun, 21 Jun 2026 11:43:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Gate=20E2E=20=E2=80=94=20NestFactory.cre?= =?UTF-8?q?ate=20=E6=9B=BF=E4=BB=A3=20Test.createTestingModule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test.createTestingModule 不提供全局 Reflector 给子模块 AppConfigModule, 导致 AdminAuthGuard 依赖解析失败。 NestFactory.create 正确初始化所有 @nestjs/core 全局 providers。 Co-Authored-By: Claude --- test/m-ai-03-gate.e2e-spec.ts | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/test/m-ai-03-gate.e2e-spec.ts b/test/m-ai-03-gate.e2e-spec.ts index 0f25a0c..aeb5d80 100644 --- a/test/m-ai-03-gate.e2e-spec.ts +++ b/test/m-ai-03-gate.e2e-spec.ts @@ -1,14 +1,8 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication, Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; +import { NestFactory } from '@nestjs/core'; +import { INestApplication } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; import request from 'supertest'; import { AppModule } from '../src/app.module'; - -// Mock AdminAuthGuard — Test.createTestingModule 不提供 Reflector 给子模块 -@Injectable() -class MockAdminAuthGuard implements CanActivate { - canActivate(_context: ExecutionContext): boolean { return true; } -} import { AiJobCreationService } from '../src/modules/ai-job/ai-job-creation.service'; import { JobDefinitionRegistry } from '../src/modules/ai-job/job-definition-registry'; import { AiJobLifecycleRepository } from '../src/modules/ai-job/ai-job-lifecycle.repository'; @@ -46,22 +40,15 @@ describe('M-AI-03 GATE E2E (fail-closed)', () => { process.env.AI_JOB_SYNTHETIC_ENABLED = 'true'; process.env.JWT_SECRET = 'gate-e2e-secret'; - // AppModule.init() 连接 Prisma + Redis — 失败则测试 fail-closed - const module: TestingModule = await Test.createTestingModule({ - imports: [AppModule], - }) - .overrideGuard(require('../src/common/guards/admin-auth.guard').AdminAuthGuard) - .useClass(MockAdminAuthGuard) - .compile(); - - app = module.createNestApplication(); - app.setGlobalPrefix('api', { exclude: ['admin-api/(.*)', 'internal/(.*)'] }); + // NestFactory.create 提供所有 core providers (Reflector etc.) + // 连接 Prisma + Redis — 失败则测试 fail-closed + app = await NestFactory.create(AppModule); await app.init(); - creationService = module.get(AiJobCreationService); - registry = module.get(JobDefinitionRegistry); - lifecycleRepo = module.get(AiJobLifecycleRepository); - jwtService = module.get(JwtService); + creationService = app.get(AiJobCreationService); + registry = app.get(JobDefinitionRegistry); + lifecycleRepo = app.get(AiJobLifecycleRepository); + jwtService = app.get(JwtService); userToken = jwtService.sign({ sub: TEST_USER, email: 'gate@test.com', role: 'USER', type: 'user' }); }, 30000);