用途:证明某个 Convex 功能确实按预期工作。类型检查通过只能说明代码可解析,无法证明非所有者被拒绝、查询返回正确行、或 mutation 产生了声称的效果。该能力补上 seed → drive → assert 循环,在进程内用 convex-test 运行,无需部署。
主要能力:以不同身份驱动功能;正负向断言,其中负向断言(应被拒绝的调用者确实被拒绝)价值最高,因为越权是常见真实缺陷;数据范围断言,确保列表/查询只返回调用者自己的行,不含第二个用户的行。
必要用法:确保 convex-test 与 vitest 为 dev 依赖,并配置 vitest.config.ts,设置 test.environment: "edge-runtime" 与 server.deps.inline: ["convex-test"],否则 convexTest(schema) 会以 import.meta.glob is not a function 失败;还需安装 @edge-runtime/vm。用 convexTest(schema) 得到 t,通过应用自身函数播种调用者行和第二个用户行,用 t.withIdentity({ subject, tokenIdentifier, ... }) 分别以所有者、其他已认证用户、未认证身份调用,断言正向与负向行为,运行 npx vitest run。
限制:不部署;发现失败断言时应修复函数本身而非放宽断言,可将修复交给 convex-authz;对任何失败断言通过总线发出发现。测试框架的通用配置属于 test 能力。界面、收费、价格、平台等信息暂未提供。