← [ BACK_TO_NOTES ]

专题归档 · 2026 年 7 月(编辑分组,非实际写作日期)

BodySense:给 Diagnosis Handler 写 Go 测试

为 Go Diagnosis Handler 补边界测试时关于依赖、Fake Repo 和测试范围的思考。

DMR-002:Go 中的测试

go 中的测试

原记录中的处理路径:

用户请求生成诊断 → DiagnosisHandler
  → 检查会话,读取 Profile / extracted info
  → 调用 Python Diagnosis AI
  → governance 检查
  → accepted 才保存诊断并推进 phase

上面的 Diagnosis 业务比较复杂。在进行诊断前,它大致需要满足以下几个步骤:

  1. 确保当前的会话存在
  2. 读取当前的会话信息(即会话诊断的结果信息)
  3. 获取用户的私人信息
  4. 调用一个 AI Service(即诊断服务)

如果我们要进行测试,且所有环节都走真实流程的话,测试就会变得非常重——需要准备真实的数据库环境、服务环境等,最终演变成一个比较重的集成测试或端到端测试。因此,我们需要对这个测试进行优化。

测试与依赖问题

根据上面的要求,去给 DiagnosisHandler.handleHTTP 这一层级写测试文件,然后要把仓储层 mock 一下,构建一个测试用的仓储层(Fake Repo): 直接创建一个 diagnosisHandlerRepo struct,然后实现所有 真实 ConsultationSession 的方法

[!question] 拆分疑问 拆分后这个测试文件会大改吗 是的话,是否应该先设计(重构)好领域,再搞测试文件

实际上没有进行手搓代码, 二是让 ai 实施了,然后先进行一个阅读学习。发现了一下问题:

  1. 当前的 diagnosis 服务 没有时间比较好的依赖注入,写死了 ai.service 之类的参数,导致测试比较困难。应该在后续重构为更优雅的依赖注入模式
创建于 2026/7/9 更新于 2026/10/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本