SuperAPI AI 工具集

write-tests

测试与质量

查看项目

更新于 10-16 08:39

技能介绍

用途:为 ryOS 编写并运行测试,使用 Bun 原生测试运行器(bun:test)。测试套件位于 tests/ 下,命名为 test-.test.ts 或 test-.test.tsx,使用 describe / test / expect。

主要能力与分类:分为两类。单元/接线测试覆盖纯逻辑、Zod schema、store reducer、辅助函数及“X 是否接到 Y”的检查,无需服务器,命令为 bun run test:unit。API 集成测试对 api/* 端点发起真实 HTTP 请求,需要服务器,命令为 bun run test:api。逻辑无需服务器时优先写单元测试;需要真实请求→处理器→Redis 路径时写 API 集成测试。

使用方式:单元测试放在 tests/unit/<domain>/,API 测试放在 tests/integration/api/,可选测试放在 tests/integration/opt-in/。API 测试使用 tests/helpers/test-utils.ts 中的辅助函数(如 BASE_URL、fetchWithOrigin、fetchWithAuth、ensureUserAuth、makeRateLimitBypassHeaders、getTokenFromAuthCookie)。运行 API 测试需先在另一终端执行 bun run dev:api(端口 3000),再执行 bun run test:api。可运行单个文件或目录,如 bun test tests/unit/media/。新增或重命名测试后运行 bun run test:registration。

注册与运行:tests/unit/ 下的单元测试由 bun run test:unit 自动发现;服务器支撑与可选套件需在 scripts/test-groups.ts 中显式登记(API_TEST_FILES、OPT_IN_TEST_FILES)。bun test 无参数会运行全部测试,包括 API 套件,因此也需要服务器。

约定与限制:集成测试每次生成新用户名避免冲突;限流路由需带 makeRateLimitBypassHeaders() 或唯一 IP;认证端点将 token 写入 ryos_auth cookie 而非 JSON body,需用 cookie 辅助函数读取;套件可接受 429 跳过模式。新增/修改 Zod schema、util、store reducer 或 API 契约时应添加或扩展测试;已有同域测试文件时应更新。除要求外不要构建与改动无关的大型新测试基础设施。具体可用脚本见 package.json。