mirror of
https://github.com/EZ-Api/ez-api.git
synced 2026-01-13 17:47:51 +00:00
53 lines
1.6 KiB
Markdown
53 lines
1.6 KiB
Markdown
# 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 契约:`github.com/ez-api/foundation/contract/testdata/provider_snapshot.json` + SyncProvider 输出回归
|
||
- golden 来自 `github.com/ez-api/foundation/contract`(go:embed),避免 DP/CP 两边复制文件
|
||
|
||
待扩展:
|
||
|
||
- model snapshot 契约(能力字段、max_output_tokens 等)
|
||
- token/master snapshot 契约(如果后续引入更多字段)
|