运维与上线

测试与 CI 契约

正确使用测试分层、真实基础设施测试、Playwright、覆盖率棘轮和构建门禁。

已根据 starter 提交 2a1a04a 验证。

测试按“允许 mock 什么”分层。被 mock 的数据库测试无法证明唯一约束;mock 鉴权守卫的路由测试也无法证明数据访问发生在认证之后。

层级证明内容可以 mock
Unit纯规则和架构扫描
APIHTTP、响应结构、鉴权顺序服务/模型,不包括守卫
Service编排、重试、成本、补偿模型和外部 SDK
Component用户可见行为fetch
Database约束、锁、真实时间戳
E2E登录浏览器到本地基础设施

每个路由都需要鉴权门禁测试,并证明在 401/403 前没有调用数据函数。每个资金或积分写入都需要重放测试,证明两个相同请求只有一个效果。

pnpm test:fast
pnpm test:run
pnpm test:cov
pnpm test:db
pnpm test:e2e

数据库名称必须包含 test,因为测试会清空表。覆盖率棘轮保护服务、模型、API 和管理数据层。Playwright 在端口 3100 的一次性环境中验证登录、组织积分、Garage 上传删除,以及五积分图像任务的重放、Worker、私有存储和签名下载。

CI 执行 lint、PostgreSQL 16 迁移、Redis 测试、覆盖率、全部构建和浏览器流程。不要为了变绿而降低阈值或用 mock 替换真实基础设施测试。

测试与 CI 契约 · Sushi SaaS