# Testing (ez-api) 本仓库的单元测试采用 Go 标准组织方式:单元测试与源码同目录(`*_test.go`),默认通过 `go test ./...` 运行。 此外,本仓库仍保留 `./test` 下的 docker-compose 集成测试(带 `integration` tag),用于端到端验证。 ## 运行 ### 单元测试 ```bash go test ./... ``` ### 集成测试(docker compose) ```bash ./test/integration.sh ``` ## 说明 - 单元测试不依赖 Docker,不访问公网。 - 对 Redis 相关逻辑优先使用 `miniredis`(纯内存、接近真实命令行为)。 - 对 DB 相关逻辑优先使用 sqlite in-memory(只用于测试),避免引入外部依赖。 ## 分阶段计划(长期) ### 阶段 1(已落地) - provider 归一化:Vertex 默认 `google_location=global` 的回归保护 - SyncService:Redis snapshot 写入与 routing key 生成 - request_id:Gin middleware 透传/生成 ### 阶段 2(已落地一部分) - Master/Key:CreateMaster/ValidateMasterKey/IssueChildKey 的关键分支(含 child key 上限) 待补齐: - Master/Key:epoch/禁用等更多状态分支 - LogWriter:批处理/刷盘边界(可用 fake clock 或缩短 flush interval) ### 阶段 3(已落地一部分:契约测试) - 与 DP 的 provider snapshot schema 契约:`internal/service/testdata/provider_snapshot.json` + SyncProvider 输出回归 待扩展: - model snapshot 契约(能力字段、max_output_tokens 等) - token/master snapshot 契约(如果后续引入更多字段)