用途:这是一个 Go 测试技能,用于编写 Go 单元测试、测试 Bubbletea TUI 组件、创建表驱动测试、添加集成测试,以及使用 golden 文件测试。触发时机为编写 Go 测试、使用 teatest 或补充测试覆盖时。
主要能力与模式:
- 表驱动测试:用匿名结构体切片定义多组用例,通过 t.Run 逐个子测试运行,同时校验返回值与错误(wantErr)。
- Bubbletea Model 测试:直接调用 m.Update(tea.KeyMsg{...}) 模拟按键,断言状态转换,如光标位置、当前屏幕等。
- Teatest 集成测试:使用 teatest.NewTestModel 创建测试模型,用 tm.Send 发送按键,tm.WaitFinished 等待结束,再通过 tm.FinalModel 取最终模型断言。
- Golden 文件测试:将 m.View() 输出与 testdata 下的 .golden 文件比对,支持通过 update 标志重新生成。
决策路径:纯函数用表驱动测试;有副作用则 mock 依赖;返回错误需覆盖成功与失败;复杂逻辑拆分为更小可测单元。TUI 组件中,状态变化测 Update,完整流程用 teatest,视觉输出用 golden 文件,按键处理发送 tea.KeyMsg。涉及系统/exec 时,可 mock os/exec、用 --short 跳过真实命令的集成测试,文件操作使用 t.TempDir()。
测试文件组织:按 model_test.go、update_test.go、view_test.go、teatest_test.go、comprehensive_test.go 划分,golden 文件放 testdata/ 目录。
常用命令: go test ./... go test -v ./internal/tui/... go test -run TestNavigation go test -cover ./... go test -update ./... go test -short ./...
限制:资料未提供该技能的安装方式、版本要求、许可证或除 teatest 文档链接外的外部依赖说明。