如何为多响应码添加Assert函数?附Node.js请求代码示例
修复并完善API多响应码断言逻辑
现有代码存在的问题
- 重复引入
request模块,造成冗余 - Switch分支使用字符串
'200'匹配,但response.statusCode是数字类型,无法正确命中 - 200状态的断言逻辑完全反向,应该验证状态码等于200而非不等于
- 缺失对401(Token错误)及其他异常状态码的断言处理
修正后的完整代码
var assert = require('assert'); var request = require('request'); var options2, token, info; // 获取Token的请求配置 var options = { 'method': 'POST', 'url': '**', // 替换为实际Token接口地址 'headers': { 'Content-Type': 'application/x-www-form-urlencoded' }, form: { 'client_id': '**', // 替换为实际client_id 'client_secret': '**', // 替换为实际client_secret 'grant_type': 'client_credentials' } }; request(options, function (error, response) { if (error) throw new Error(error); info = JSON.parse(response.body); console.log(info.access_token); token = info.access_token; // 主API请求配置 options2 = { 'method': 'GET', 'url': '**', // 替换为实际主API地址 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token } }; request(options2, function (error, response) { if (error) throw new Error(error); // 基于响应码的多分支断言逻辑 switch(response.statusCode) { case 200: // 正常请求:验证状态码为200 assert.strictEqual(response.statusCode, 200, 'Expected 200 OK for valid token'); console.log('主API请求正常,返回200'); break; case 401: // Token错误:验证状态码为401 assert.strictEqual(response.statusCode, 401, 'Expected 401 Unauthorized for invalid token'); console.log('Token无效/过期,返回401'); break; default: // 主API宕机或其他异常:验证状态码非200/401 assert.notStrictEqual(response.statusCode, 200, '主API异常,未返回预期的200'); assert.notStrictEqual(response.statusCode, 401, '主API异常,未返回预期的401'); console.log(`主API异常,返回状态码:${response.statusCode}`); } }); });
关键逻辑说明
- 类型匹配修正:Switch分支使用数字类型的状态码(
200/401),与response.statusCode的类型保持一致 - 断言逻辑修正:使用
assert.strictEqual替代assert.ok,提供更精准的类型与值校验,同时补充清晰的错误提示 - 多场景覆盖:
- 正常场景:校验状态码为200
- Token错误场景:校验状态码为401
- 异常宕机场景:校验状态码既不是200也不是401,覆盖所有其他异常情况
- 冗余代码清理:移除重复的
request模块引入,优化变量声明与作用域
内容的提问来源于stack exchange,提问作者Salman
相关产品推荐
相关产品推荐

