Qoder生成Node.js接口后,应立即验证接口是否可正常调用、返回数据结构是否正确,以及异常处理路径是否完整覆盖:先执行qoder dev启动服务并确认端口已监听,再使用curl或Postman测试接口路由是否畅通,最后通过qoder test运行单元测试,并结合--coverage检查关键逻辑分支的覆盖率。

Qoder生成Node.js接口代码后,必须第一时间检查接口能否正常访问、响应结构是否符合预期、异常分支是否得到验证,不能仅依赖代码生成阶段的模拟响应结果。
启动服务并确认端口监听
进入项目根目录后,执行qoder dev启动开发服务。该命令会自动识别src/backend目录下的Express或Fastify入口文件,并绑定默认端口(通常为5000),这是测试Qoder生成Node.js接口是否可运行的第一步。
如果终端没有输出类似✅ Server running on http://localhost:5000的提示,通常说明服务并未真正启动。常见原因是package.json中缺少"scripts": {"dev": "qoder dev"}配置,此时需要先手动补充,再重新执行启动命令。
随后打开新的终端窗口,执行curl -I http://localhost:5000/health。若返回HTTP/1.1 200 OK,说明基础服务已经就绪;如果提示Failed to connect,则应优先检查是否有其他进程占用了5000端口。
用Postman快速发起真实请求
方法一:导入Qoder自动生成的Postman集合
Qoder在生成Node.js后端接口代码时,通常会同步生成postman-collection.json文件,位置位于__generated__/postman目录下。只需在Postman中点击「Import」→「Upload Files」,选择该文件,即可快速导入全部接口请求模板,提升接口测试效率。
方法二:手动构造GET请求验证路由连通性
以“生成用户列表”接口为例,直接在Postman中新建请求,并将URL设置为http://localhost:5000/api/users。发送请求后,正常情况下应返回一个JSON数组。如果响应内容是Cannot GET /api/users,基本可以判断为Qoder生成的路由没有被Express正确挂载。这时应重点检查src/backend/app.ts,确认是否遗漏了app.use('/api', userRouter)这一行路由注册代码。
【注意:Postman必须使用原始URL,不能带query参数再点“Send”后手动修改地址栏——这会导致缓存旧响应】
编写并运行单元测试验证逻辑分支
第一步:确认测试环境已初始化
执行qoder init --test。该命令会创建__tests__目录、生成jest.config.js,并安装@qoder/test-utils。如果跳过这一步,后续执行qoder test时通常会报错Cannot find module 'jest',导致Node.js接口测试无法继续。
第二步:编写一个最小可运行测试文件
在__tests__/api/users.test.ts中写入:
import request from 'supertest';
import { app } from '../../src/backend/app';
describe('GET /api/users', () => {
it('should return 200 and array', async () => {
const res = await request(app).get('/api/users');
expect(res.status).toBe(200);
expect(Array.isArray(res.body)).toBe(true);
});
});
第三步:运行该测试
直接执行qoder test __tests__/api/users.test.ts即可。测试通过后,终端通常会显示✓ GET /api/users › should return 200 and array这样的结果;如果测试未通过,报错信息也会比较明确,能够帮助你快速判断问题到底出在status状态码不匹配,还是body返回类型存在异常,而不是只给出笼统的失败提示。
第四步:触发覆盖率报告
追加--coverage参数:qoder test __tests__/api/users.test.ts --coverage。生成的coverage/lcov-report/index.html中,红色高亮区域代表尚未执行到的代码行。例如JWT中间件中的if (!token)分支若未覆盖,就应补充一个携带空Authorization头的测试用例,以确保接口异常处理逻辑也被完整验证。
