mirror of
https://github.com/Powerful-517/yys-editor.git
synced 2026-03-05 06:55:26 +00:00
test: 集成 Vitest 测试框架和开发规范
- 安装 vitest, @vue/test-utils, jsdom 等测试依赖 - 配置 vitest.config.js 测试环境 - 添加 schema.test.ts (7个数据结构验证测试) - 添加 useStore.test.ts (7个状态管理测试) - 创建测试指南文档 (docs/testing.md) - 创建测试规范文档 (docs/testing-rules.md) - 创建开发规范文档 (docs/development-rules.md) - 创建开发工作流程文档 (docs/1management/workflow.md) - 添加测试相关 npm scripts (test, test:watch, test:ui, test:coverage) - 所有测试通过 (14/14)
This commit is contained in:
142
docs/testing-rules.md
Normal file
142
docs/testing-rules.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# 测试规范
|
||||
|
||||
## 核心原则
|
||||
|
||||
**所有涉及数据层和业务逻辑的改动,必须在提交前通过测试验证。**
|
||||
|
||||
## 必须编写测试的场景
|
||||
|
||||
### 1. 数据模型变更
|
||||
- 修改 `schema.ts` 中的类型定义
|
||||
- 添加新的数据结构或接口
|
||||
- 修改默认值配置
|
||||
|
||||
**要求**: 在 `schema.test.ts` 中添加对应测试用例
|
||||
|
||||
### 2. Store 状态管理
|
||||
- 修改 `useStore.ts` 中的任何方法
|
||||
- 添加新的状态管理逻辑
|
||||
- 修改文件操作(增删改查)
|
||||
|
||||
**要求**: 在 `useStore.test.ts` 中添加对应测试用例
|
||||
|
||||
### 3. 核心业务逻辑
|
||||
- 数据导入导出功能
|
||||
- 数据迁移和兼容性处理
|
||||
- localStorage 持久化逻辑
|
||||
- 数据验证和规范化
|
||||
|
||||
**要求**: 编写独立测试文件或在现有测试中补充
|
||||
|
||||
### 4. 工具函数和辅助方法
|
||||
- 添加新的工具函数
|
||||
- 修改现有的数据处理逻辑
|
||||
|
||||
**要求**: 创建对应的 `*.test.ts` 文件
|
||||
|
||||
## 开发流程
|
||||
|
||||
```
|
||||
1. 需求分析
|
||||
↓
|
||||
2. 编写/更新测试用例(描述预期行为)
|
||||
↓
|
||||
3. 运行测试(此时应该失败)
|
||||
↓
|
||||
4. 实现功能代码
|
||||
↓
|
||||
5. 运行测试直到全部通过
|
||||
↓
|
||||
6. 代码审查和提交
|
||||
```
|
||||
|
||||
## 提交前检查清单
|
||||
|
||||
- [ ] 运行 `npm test` 确保所有测试通过
|
||||
- [ ] 新增功能已添加对应测试用例
|
||||
- [ ] 修改的功能已更新相关测试
|
||||
- [ ] 测试覆盖了正常情况和边界情况
|
||||
- [ ] 没有跳过或注释掉失败的测试
|
||||
|
||||
## 测试命令
|
||||
|
||||
```bash
|
||||
# 提交前必须运行
|
||||
npm test
|
||||
|
||||
# 开发时推荐使用监听模式
|
||||
npm run test:watch
|
||||
|
||||
# 查看测试覆盖率
|
||||
npm run test:coverage
|
||||
```
|
||||
|
||||
## 测试编写规范
|
||||
|
||||
### 1. 测试文件命名
|
||||
- 测试文件放在 `src/__tests__/` 目录
|
||||
- 命名格式: `<源文件名>.test.ts`
|
||||
- 例如: `schema.ts` → `schema.test.ts`
|
||||
|
||||
### 2. 测试用例结构
|
||||
```typescript
|
||||
describe('功能模块名称', () => {
|
||||
beforeEach(() => {
|
||||
// 每个测试前的准备工作
|
||||
})
|
||||
|
||||
it('应该做某件事(正常情况)', () => {
|
||||
// 准备数据
|
||||
const input = { /* ... */ }
|
||||
|
||||
// 执行操作
|
||||
const result = someFunction(input)
|
||||
|
||||
// 验证结果
|
||||
expect(result).toBe(expectedValue)
|
||||
})
|
||||
|
||||
it('应该处理边界情况', () => {
|
||||
// 测试空值、极端值等
|
||||
})
|
||||
|
||||
it('应该处理错误情况', () => {
|
||||
// 测试异常处理
|
||||
})
|
||||
})
|
||||
```
|
||||
|
||||
### 3. 测试描述规范
|
||||
- 使用中文描述,清晰表达测试意图
|
||||
- 格式: "应该 + 动词 + 预期结果"
|
||||
- 例如: "应该正确导入包含式神数据的文件"
|
||||
|
||||
### 4. Mock 使用原则
|
||||
- Mock 外部依赖(Element Plus、LogicFlow 等)
|
||||
- 不要 Mock 被测试的核心逻辑
|
||||
- Mock 要尽可能简单和稳定
|
||||
|
||||
## 不需要测试的场景
|
||||
|
||||
以下情况可以不写单元测试:
|
||||
- 纯 UI 组件的样式调整
|
||||
- 简单的 getter/setter
|
||||
- 第三方库的直接调用
|
||||
- 临时的调试代码
|
||||
|
||||
但建议通过手动测试验证这些改动。
|
||||
|
||||
## 测试失败处理
|
||||
|
||||
如果测试失败:
|
||||
1. **不要跳过或删除测试** - 测试失败说明代码有问题
|
||||
2. 分析失败原因 - 是代码错误还是测试用例需要更新
|
||||
3. 修复代码或更新测试
|
||||
4. 确保所有测试通过后再提交
|
||||
|
||||
## 持续改进
|
||||
|
||||
- 定期审查测试覆盖率
|
||||
- 补充缺失的测试用例
|
||||
- 重构重复的测试代码
|
||||
- 更新过时的测试用例
|
||||
Reference in New Issue
Block a user