mirror of
https://github.com/EZ-Api/ez-api.git
synced 2026-01-13 17:47:51 +00:00
1.6 KiB
1.6 KiB
Testing (ez-api)
本仓库的单元测试采用 Go 标准组织方式:单元测试与源码同目录(*_test.go),默认通过 go test ./... 运行。
此外,本仓库仍保留 ./test 下的 docker-compose 集成测试(带 integration tag),用于端到端验证。
运行
单元测试
go test ./...
集成测试(docker compose)
./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 输出回归- golden 来自
github.com/ez-api/foundation/contract(go:embed),避免 DP/CP 两边复制文件
- golden 来自
待扩展:
- model snapshot 契约(能力字段、max_output_tokens 等)
- token/master snapshot 契约(如果后续引入更多字段)