用途:这是一个面向 getsentry/abacus 项目的测试编写技能,用于在新增测试或修改既有测试时,按照项目既有约定撰写 Vitest 测试。
主要能力与约定:测试与源码同目录放置,例如 src/lib/utils.ts 对应 src/lib/utils.test.ts,路由 src/app/api/stats/route.ts 对应 route.test.ts。测试辅助代码集中在 src/test-utils/,包含全局 setup(PGlite、MSW、auth mock)、外部 API mock 处理器 msw-handlers.ts 以及 auth 测试辅助 auth.ts。
鉴权测试:鉴权被全局 mock,使用 @/test-utils/auth 中的 mockAuthenticated() 与 mockUnauthenticated() 控制状态,默认测试用户为 test@example.com / Test User。使用 getSession() 的路由必须验证未鉴权时返回 401;使用 CRON_SECRET 的路由需用 vi.stubEnv 注入密钥并验证缺失或错误 Authorization 时返回 401;带签名校验的 webhook 路由需验证无签名与签名无效时返回 401。每条受保护路由都必须有鉴权测试。
数据库测试:使用 PGlite 内存 PostgreSQL,无需 Docker,启动时自动推送 schema,每个测试在事务中运行并回滚,可用 @/lib/queries 的 insertUsageRecord 灌入数据。
运行方式:使用 pnpm test 运行全部测试,pnpm test:watch 进入监听模式。
限制:资料未说明安装步骤、依赖版本、支持的平台、收费或价格等信息,暂未提供。