mirror of
https://github.com/Powerful-517/yys-editor.git
synced 2026-03-05 06:55:26 +00:00
fix: 修复保存后刷新网页图层全变成1的问题
问题原因: 1. LogicFlow 的 render() 方法不会自动应用节点的 zIndex 属性 2. 切换标签时,LogicFlow Label 插件对空 _label 数组处理有误导致渲染失败 3. 渲染失败后节点 zIndex 被重置为默认值 1 解决方案: 1. 在 App.vue 中,render() 后立即从保存的数据中恢复每个节点的 zIndex 2. 在 normalizeGraphData() 中清理空的 _label 数组,避免 Label 插件报错 3. 简化 FlowEditor.vue 中的 normalizeAllNodes(),移除不必要的重新分配逻辑 4. 清理调试日志,保持代码整洁 测试: - 添加节点并调整图层顺序 - 切换标签页 - 刷新浏览器 - 确认图层顺序保持不变
This commit is contained in:
203
src/__tests__/SUMMARY.md
Normal file
203
src/__tests__/SUMMARY.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# 测试文件整理完成 ✅
|
||||
|
||||
## 📁 新的文件结构
|
||||
|
||||
```
|
||||
src/__tests__/
|
||||
├── README.md # 📖 测试文件总览(从这里开始)
|
||||
├── TEST-RULES.md # 📋 测试规范文档(必读)
|
||||
├── README-测试报告.md # 📊 测试报告和问题分析
|
||||
├── setup.ts # ⚙️ 测试环境配置
|
||||
├── layer-management/ # 📂 图层管理测试
|
||||
│ ├── README.md # 图层管理测试说明
|
||||
│ ├── real-scenario.spec.ts # ✅ 真实场景测试(活跃)
|
||||
│ ├── mock-test.spec.ts.bak # 🗄️ Mock 测试(已废弃)
|
||||
│ ├── integration-test.spec.ts.bak # 🗄️ 集成测试(已废弃)
|
||||
│ └── unit-test.spec.ts.bak # 🗄️ 单元测试(已废弃)
|
||||
├── schema.test.ts # Schema 验证测试
|
||||
└── useStore.test.ts # Store 测试
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✨ 主要改进
|
||||
|
||||
### 1. 文件组织
|
||||
|
||||
- ✅ 创建了 `layer-management/` 目录,集中管理图层相关测试
|
||||
- ✅ 将 Mock 测试重命名为 `.bak`,标记为已废弃
|
||||
- ✅ 保留了真实场景测试作为推荐方案
|
||||
|
||||
### 2. 文档完善
|
||||
|
||||
- ✅ **README.md** - 测试文件总览和快速开始
|
||||
- ✅ **TEST-RULES.md** - 详细的测试规范和最佳实践
|
||||
- ✅ **README-测试报告.md** - 当前测试结果和问题分析
|
||||
- ✅ **layer-management/README.md** - 图层管理测试说明
|
||||
|
||||
### 3. 测试规范
|
||||
|
||||
明确了测试原则:
|
||||
|
||||
#### ✅ 推荐:真实场景测试
|
||||
```typescript
|
||||
// 使用真实的 LogicFlow 实例
|
||||
const lf = new LogicFlow({ ... })
|
||||
const node = lf.addNode({ ... })
|
||||
lf.setElementZIndex(node.id, 'top')
|
||||
|
||||
// 能发现真实问题!
|
||||
const graphData = lf.getGraphRawData()
|
||||
expect(graphData.nodes[0].zIndex).toBeDefined() // ❌ 失败!
|
||||
```
|
||||
|
||||
#### ❌ 不推荐:Mock 测试
|
||||
```typescript
|
||||
// 使用模拟类
|
||||
class MockLogicFlow { ... }
|
||||
|
||||
// 只能验证理想逻辑,无法发现真实问题
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 运行测试
|
||||
|
||||
```bash
|
||||
# 运行所有测试
|
||||
npm test
|
||||
|
||||
# 运行图层管理测试
|
||||
npm test -- layer-management
|
||||
|
||||
# 运行真实场景测试
|
||||
npm test -- real-scenario
|
||||
|
||||
# 监听模式
|
||||
npm run test:watch
|
||||
|
||||
# 查看详细输出
|
||||
npm test -- --reporter=verbose
|
||||
```
|
||||
|
||||
### 查看文档
|
||||
|
||||
1. 先看 **README.md** - 了解整体结构
|
||||
2. 再看 **TEST-RULES.md** - 学习测试规范
|
||||
3. 参考 **layer-management/real-scenario.spec.ts** - 学习如何编写测试
|
||||
|
||||
---
|
||||
|
||||
## 📊 当前测试状态
|
||||
|
||||
### 图层管理测试(9 个测试)
|
||||
|
||||
- ✅ **通过**: 5/9
|
||||
- ❌ **失败**: 4/9
|
||||
|
||||
### 发现的真实问题
|
||||
|
||||
1. **zIndex 不会保存到数据中**
|
||||
- `getGraphRawData()` 返回的数据中没有 zIndex
|
||||
- 导致导出/导入会丢失图层信息
|
||||
|
||||
2. **置底操作逻辑错误**
|
||||
- 置底后 zIndex 变成 998/996
|
||||
- 应该是比所有节点都小的值
|
||||
|
||||
这些问题是通过**真实场景测试**发现的,Mock 测试无法发现!
|
||||
|
||||
---
|
||||
|
||||
## 🎯 测试原则总结
|
||||
|
||||
### 为什么要用真实场景测试?
|
||||
|
||||
| 对比项 | Mock 测试 | 真实场景测试 |
|
||||
|--------|-----------|--------------|
|
||||
| 能否发现真实问题 | ❌ 不能 | ✅ 能 |
|
||||
| 测试可靠性 | ⚠️ 低 | ✅ 高 |
|
||||
| 接近用户体验 | ❌ 不接近 | ✅ 接近 |
|
||||
| 维护成本 | ⚠️ 高(需要同步更新 Mock) | ✅ 低 |
|
||||
|
||||
### 何时使用 Mock?
|
||||
|
||||
只在以下情况使用:
|
||||
- 外部 API 调用(HTTP 请求)
|
||||
- 时间相关的测试(定时器)
|
||||
- 文件系统操作
|
||||
- 难以复现的场景(网络错误)
|
||||
|
||||
**核心业务逻辑必须使用真实场景测试!**
|
||||
|
||||
---
|
||||
|
||||
## 📚 文档导航
|
||||
|
||||
### 必读文档
|
||||
|
||||
1. **[README.md](./README.md)** - 从这里开始
|
||||
2. **[TEST-RULES.md](./TEST-RULES.md)** - 测试规范(必读)
|
||||
3. **[README-测试报告.md](./README-测试报告.md)** - 当前问题分析
|
||||
|
||||
### 模块文档
|
||||
|
||||
- **[layer-management/README.md](./layer-management/README.md)** - 图层管理测试
|
||||
|
||||
### 示例代码
|
||||
|
||||
- **[layer-management/real-scenario.spec.ts](./layer-management/real-scenario.spec.ts)** - 真实场景测试示例
|
||||
|
||||
---
|
||||
|
||||
## 🔧 下一步
|
||||
|
||||
### 1. 修复发现的问题
|
||||
|
||||
参考 **README-测试报告.md** 中的解决方案:
|
||||
|
||||
- 修复 zIndex 持久化问题
|
||||
- 修复置底操作逻辑
|
||||
|
||||
### 2. 添加更多真实场景测试
|
||||
|
||||
参考 **layer-management/real-scenario.spec.ts**,为其他功能添加测试:
|
||||
|
||||
- 节点拖拽
|
||||
- 节点复制粘贴
|
||||
- 节点分组
|
||||
- 数据导入导出
|
||||
|
||||
### 3. 提高测试覆盖率
|
||||
|
||||
目标:
|
||||
- 核心功能:80%+ 覆盖率
|
||||
- 用户关键路径:100% 覆盖率
|
||||
|
||||
---
|
||||
|
||||
## ✅ 完成清单
|
||||
|
||||
- [x] 创建 `layer-management/` 目录
|
||||
- [x] 移动并重命名测试文件
|
||||
- [x] 废弃 Mock 测试(重命名为 .bak)
|
||||
- [x] 创建 README.md(总览)
|
||||
- [x] 创建 TEST-RULES.md(规范)
|
||||
- [x] 创建 layer-management/README.md(模块说明)
|
||||
- [x] 验证测试可以正常运行
|
||||
- [x] 更新测试报告
|
||||
|
||||
---
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
现在你有了:
|
||||
|
||||
1. **清晰的文件结构** - 测试文件按模块组织
|
||||
2. **完善的文档** - 从入门到进阶的完整指南
|
||||
3. **真实场景测试** - 能够发现真实代码问题
|
||||
4. **测试规范** - 明确的最佳实践
|
||||
|
||||
**最重要的是**:真实场景测试已经发现了 2 个真实的 bug,这是 Mock 测试无法做到的!
|
||||
Reference in New Issue
Block a user