Codex CLI 写完代码别只测正常值:我给 limit 补了 5 个边界测试
Codex CLI 写完代码别只测正常值:我给 limit 补了 5 个边界测试
还没有安装 Codex CLI?可以先看上一篇:
Windows 一键安装 Codex CLI:Node.js 一起装好
上一篇我确认了 /api/books?limit=1 的路由问题,也把 limit 的校验写进了服务端。但实现有校验,测试却只覆盖了一个正常值。
这次我没有让 Codex 修改生产代码,只在独立项目 codex-limit-boundary-books-api 中补测试。修改前 3 项通过,补完 5 个边界场景后 8 项全部通过;src/server.js 前后 SHA-256 一致。
项目和基线
项目代码在仓库根目录:codes/codex-limit-boundary-books-api/。它没有第三方依赖,服务端使用 Node.js 内置 http 模块。
原来的测试只有:
GET /health
GET /api/books
GET /api/books?limit=1
进入项目后先运行:
cd .\codes\codex-limit-boundary-books-api
npm test
真实基线是 3 项通过、0 项失败。

图 1:补充边界测试前的真实基线输出。
先写清楚规则
当前服务端规则是:
- 不传
limit,返回全部图书。 limit是正整数,返回前limit本书。limit是0、负数、非数字或小数,返回400。limit大于当前图书数量,返回现有全部图书。
没有规则时,测试越多越容易变成堆数字。先把预期写清楚,再补输入。
补 5 个场景
非法输入用循环覆盖 4 个值:0、-1、abc 和 1.5,它们都应该返回 400。
for (const limit of ["0", "-1", "abc", "1.5"]) {
test(`GET /api/books?limit=${limit} rejects an invalid limit`, async () => {
const response = await fetch(`${baseUrl}/api/books?limit=${limit}`);
assert.equal(response.status, 400);
});
}
再补一个 limit=999。它是合法正整数,但当前只有两本书,预期是返回现有两本,不造数据。

图 2:新增的 4 个非法输入和 1 个超大合法值测试。
修改后验收
重新运行:
npm test
8 项测试全部通过,退出码为 0:
图 3:补充边界测试后的真实输出。
这轮没有调用 Codex 修改代码,新增测试由我手动完成,所以不能把它写成 Codex 产出。
确认生产代码没有变化
示例项目没有单独 Git 基线,这次用 src/server.js 前后 SHA-256 核对:
SERVER_HASH_UNCHANGED=True
Only test/server.test.js changed

图 4:生产代码哈希一致,只有测试文件增加覆盖。
仍未覆盖的输入包括空格、指数形式、超出安全整数范围的数值,以及非 GET 请求。这些要不要支持,应该先由接口规则决定。
安全提醒
这个示例项目不需要 API Key。文章、截图和 Git 历史中都不要放真实 API Key、Authorization、Cookie、配置文件原文或后台截图。
示例代码
本文使用的独立项目已放在 Gitee:
更多推荐




所有评论(0)