Browse Source

📝 docs(test): 更新测试文档以反映从Jest到Vitest的迁移

- 更新测试框架信息,将Jest替换为Vitest 3.2.4
- 更新测试环境说明,将jsdom替换为happy-dom
- 更新覆盖率工具说明,将Jest内置覆盖率替换为@vitest/coverage-v8
- 更新配置文件引用,从jest.config.js改为vitest.config.ts
- 更新mock策略说明,将Jest mock功能替换为Vitest mock功能
- 更新断言库说明,将Jest内置断言替换为Vitest内置断言

📝 docs(ui): 更新UI架构文档中的测试代码示例

- 将jest.fn()替换为vi.fn()以适应Vitest测试框架

♻️ refactor(test): 修复UserService测试中的类型断言问题

- 为bcrypt.compare的mock调用添加类型断言,解决类型不匹配问题
yourname 2 tháng trước cách đây
mục cha
commit
f4774f844f

+ 6 - 6
docs/stories/001.001.story.md

@@ -36,10 +36,10 @@ Draft
 ## Dev Notes
 
 ### 现有技术栈分析
-- **测试框架**: Jest 29.7.0 + ts-jest 29.2.5 [Source: package.json]
-- **测试环境**: Node.js环境 + jsdom(前端测试)[Source: jest.config.js]
-- **覆盖率工具**: Jest内置覆盖率报告 [Source: jest.config.js]
-- **现有配置**: Jest配置完整,包含模块映射、覆盖率阈值、测试环境设置 [Source: jest.config.js]
+- **测试框架**: Vitest 3.2.4 [Source: package.json]
+- **测试环境**: Node.js环境 + happy-dom(前端测试)[Source: vitest.config.ts]
+- **覆盖率工具**: @vitest/coverage-v8 [Source: vitest.config.ts]
+- **现有配置**: Vitest配置完整,包含模块映射、覆盖率阈值、测试环境设置 [Source: vitest.config.ts]
 
 ### 核心模块测试需求
 **UserService测试重点**:
@@ -117,9 +117,9 @@ describe('ServiceName', () => {
 
 ### 测试策略
 - **单元测试范围**: 单个函数、方法、类的独立测试
-- **Mock策略**: 使用Jest mock功能隔离外部依赖
+- **Mock策略**: 使用Vitest mock功能隔离外部依赖
 - **数据准备**: 使用工厂函数创建测试数据
-- **断言库**: Jest内置断言 + 自定义匹配器
+- **断言库**: Vitest内置断言 + 自定义匹配器
 
 ### 测试覆盖目标
 - **行覆盖率**: > 70%

+ 3 - 3
docs/stories/001.002.story.md

@@ -36,9 +36,9 @@ Draft
 
 ### 现有技术栈分析
 - **API框架**: Hono 4.8.5 [Source: package.json]
-- **测试库**: @testing-library/react 16.3.2, @testing-library/jest-dom 6.6.3 [Source: package.json]
+- **测试库**: @testing-library/react 16.3.2 [Source: package.json]
 - **数据库**: MySQL 8.0.36 + TypeORM 0.3.25 [Source: package.json]
-- **现有配置**: Jest支持jsdom环境 [Source: jest.config.js]
+- **现有配置**: Vitest支持happy-dom环境 [Source: vitest.config.ts]
 
 ### 集成测试需求
 **API集成测试重点**:
@@ -112,7 +112,7 @@ src/
 - 种子数据工厂函数
 
 **外部服务Mock**:
-- Jest mock模块功能
+- Vitest mock模块功能
 - Mock Service Worker (MSW) for HTTP
 - 自定义stub实现
 

+ 1 - 1
docs/ui-architecture.md

@@ -446,7 +446,7 @@ describe('Button', () => {
   })
 
   it('calls onClick handler when clicked', () => {
-    const handleClick = jest.fn()
+    const handleClick = vi.fn()
     render(<Button onClick={handleClick}>Click me</Button>)
 
     fireEvent.click(screen.getByRole('button'))

+ 1 - 2
src/server/modules/users/__tests__/user.service.test.ts

@@ -1,5 +1,4 @@
 import { UserService } from '../user.service';
-import { DataSource } from 'typeorm';
 import { UserEntity as User } from '../user.entity';
 import * as bcrypt from 'bcrypt';
 import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
@@ -181,7 +180,7 @@ describe('UserService', () => {
     });
 
     it('应该验证密码错误', async () => {
-      vi.mocked(bcrypt.compare).mockResolvedValueOnce(false);
+      (vi.mocked(bcrypt.compare) as any).mockResolvedValueOnce(false);
       const user = { password: 'hashed_password' } as User;
 
       const result = await userService.verifyPassword(user, 'wrong_password');