Files
danyang-match/tests
WorkBuddy aa1114338e 新增对象存储真实链路探针(判据,非 pytest 用例)
背景:E2E 全套 65 例对对象存储零覆盖,而 generatePresignedUrl 只是本地
签名、不访问存储,因此"签名接口返回 200"无法证明对象真能存进去。

实证(2026-09-22):MinIO 的 /data 下只有 .minio.sys,无任何 bucket;
mc cp 到 private 报 `Bucket 'private' does not exist`。全仓库零建桶代码、
零初始化脚本 —— 真实上传链路在当前配置下必然失败,而所有测试仍全绿。

本探针覆盖 PhotoService 的真实路径并要求字节级一致:服务端直传、
presigned PUT(客户端直传)、presigned GET,并同时验证 path / virtual-host
两种 addressing style。支持 --no-create-bucket 负向模式,用于证明判据
有判别力而非恒绿。

不在 CI 运行:依赖 boto3 + requests,不进 tests/e2e/requirements.txt。
2026-09-22 12:26:37 +08:00
..

测试基础设施

测试目录结构

tests/
├── invariants/       # 核心不变量测试(每次CI必跑)
│   ├── INV-001_Required不可自动放宽.test.ts
│   ├── INV-002_未Mutual不可聊天.test.ts
│   ├── INV-003_Block后双方不可互动.test.ts
│   ├── INV-004_双向并发Like只创建一个Match.test.ts
│   ├── INV-005_Activity最后一个名额不可超卖.test.ts
│   ├── INV-006_单向活动意向不可泄露.test.ts
│   ├── INV-007_红娘不能替用户Like.test.ts
│   ├── INV-008_非授权Operator不能读取身份证.test.ts
│   ├── INV-009_非案件上下文不能读取聊天.test.ts
│   └── INV-010_跨Organization不能越权.test.ts
├── unit/             # 单元测试
├── integration/      # 集成测试
├── api/              # API 测试
├── permission/       # 权限测试
├── concurrency/      # 并发测试
└── e2e/              # 端到端测试

Phase 01 测试骨架

每个测试文件至少包含:

  • 测试描述
  • 前置条件
  • 操作步骤
  • 预期结果
  • 断言

运行测试

# Backend 单元测试
cd backend
./mvnw test

# Backend 集成测试
./mvnw verify

# Admin Web 构建检查
cd admin-web
pnpm build

# Miniapp 编译检查
cd miniapp
npx tsc --noEmit