From 59128ea9a600b3cfc28b9539cdca209cd19a3018 Mon Sep 17 00:00:00 2001 From: moyin <244344649@qq.com> Date: Mon, 12 Jan 2026 20:01:32 +0800 Subject: [PATCH] =?UTF-8?q?test(users):=20=E5=AE=8C=E5=96=84users=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=B5=8B=E8=AF=95=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 范围:src/core/db/users/ - 添加UsersModule模块配置测试 - 验证模块依赖注入和服务导出 - 确保双模式配置的正确性 - 提升测试覆盖率完整性 --- src/core/db/users/users.module.spec.ts | 114 +++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 src/core/db/users/users.module.spec.ts diff --git a/src/core/db/users/users.module.spec.ts b/src/core/db/users/users.module.spec.ts new file mode 100644 index 0000000..549e8dc --- /dev/null +++ b/src/core/db/users/users.module.spec.ts @@ -0,0 +1,114 @@ +/** + * 用户模块测试套件 + * + * 功能描述: + * - 测试UsersModule的模块配置和依赖注入 + * - 验证模块导入、提供者和导出的正确性 + * - 确保用户服务的正确配置 + * - 测试模块间的依赖关系 + * + * 测试覆盖范围: + * - 模块实例化:模块能够正确创建和初始化 + * - 依赖注入:所有服务的正确注入 + * - 服务导出:UsersService的正确导出 + * - 双模式配置:内存模式和数据库模式的正确配置 + * + * 最近修改: + * - 2026-01-12: 功能新增 - 创建UsersModule测试文件,确保模块配置测试覆盖 (修改者: moyin) + * + * @author moyin + * @version 1.0.0 + * @since 2026-01-12 + * @lastModified 2026-01-12 + */ + +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigService } from '@nestjs/config'; +import { UsersModule } from './users.module'; +import { UsersService } from './users.service'; +import { UsersMemoryService } from './users_memory.service'; + +describe('UsersModule', () => { + let module: TestingModule; + let usersService: any; + + beforeEach(async () => { + const mockConfigService = { + get: jest.fn((key: string, defaultValue?: any) => { + switch (key) { + case 'DATABASE_MODE': + return 'memory'; + default: + return defaultValue; + } + }), + }; + + module = await Test.createTestingModule({ + imports: [UsersModule.forMemory()], + }) + .overrideProvider(ConfigService) + .useValue(mockConfigService) + .compile(); + + usersService = module.get('UsersService'); + }); + + afterEach(async () => { + if (module) { + await module.close(); + } + }); + + it('should be defined', () => { + expect(module).toBeDefined(); + }); + + describe('Service Providers', () => { + it('should provide UsersService', () => { + expect(usersService).toBeDefined(); + expect(usersService).toBeInstanceOf(UsersMemoryService); + }); + }); + + describe('Module Dependencies', () => { + it('should import required modules', () => { + expect(module).toBeDefined(); + expect(usersService).toBeDefined(); + }); + + it('should not have circular dependencies', () => { + expect(module).toBeDefined(); + }); + }); + + describe('Module Exports', () => { + it('should export UsersService', () => { + expect(usersService).toBeDefined(); + expect(usersService).toBeInstanceOf(UsersMemoryService); + }); + + it('should make UsersService available for injection', () => { + const service = module.get('UsersService'); + expect(service).toBe(usersService); + }); + }); + + describe('Dynamic Module Configuration', () => { + it('should create memory module correctly', () => { + const memoryModule = UsersModule.forMemory(); + expect(memoryModule).toBeDefined(); + expect(memoryModule.module).toBe(UsersModule); + expect(memoryModule.providers).toBeDefined(); + expect(memoryModule.exports).toBeDefined(); + }); + + it('should create database module correctly', () => { + const databaseModule = UsersModule.forDatabase(); + expect(databaseModule).toBeDefined(); + expect(databaseModule.module).toBe(UsersModule); + expect(databaseModule.providers).toBeDefined(); + expect(databaseModule.exports).toBeDefined(); + }); + }); +}); \ No newline at end of file