fix(test): 修复MagicMock枚举导致的3个单元测试失败 #642
Reference in New Issue
Block a user
Delete Branch "ci/fix-unit-test-magicmock-enum"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
Unit Tests 有3个用例失败:
TestP1Validations.test_validate_template_exists_successTestTemplatePlanConfigLoading.test_load_template_config_assembles_three_fieldsTestTemplatePlanConfigLoading.test_load_template_config_only_bgm根因
测试 mock
SessionLocal时未区分新/旧模板系统的 model 查询。SQLAlchemyEditTemplateRepository.get()也会走到 mock session 并返回 MagicMock 对象,导致_model_to_entity中EditTemplateStatus(model.status)枚举转换失败(MagicMock 不是有效的枚举值)。这些测试本意是测旧模板系统(TemplateModel)的 fallback 路径,但新模板系统先被调用就崩了。
修复
mock session.query() 增加 side_effect,根据 model 类型返回不同结果:
同时修复了
test_load_template_config_not_found_returns_empty中的同样问题。代码审查结果 - PR #642
⚠️ 问题(0个需要修改)
无
💡 建议(1个可选)
if "EditTemplate" in name)来区分不同的 Model,这种方式虽然简洁,但依赖于类名字符串,如果后续类名重构或引入包含相同子串的新类,可能导致测试逻辑错误。如果测试文件中已导入相关 Model 类,建议使用isinstance或直接对象比较(如if model is EditTemplateModel:)以提高健壮性。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 14:15:38 | 模型:
8a468157eeto1a6672dc6e🗑️ 预览环境已清理
PR #642 已关闭或合并,对应的预览环境已被清理。