You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为多响应码添加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}`);
    }
  });
});

关键逻辑说明

  1. 类型匹配修正:Switch分支使用数字类型的状态码(200/401),与response.statusCode的类型保持一致
  2. 断言逻辑修正:使用assert.strictEqual替代assert.ok,提供更精准的类型与值校验,同时补充清晰的错误提示
  3. 多场景覆盖:
    • 正常场景:校验状态码为200
    • Token错误场景:校验状态码为401
    • 异常宕机场景:校验状态码既不是200也不是401,覆盖所有其他异常情况
  4. 冗余代码清理:移除重复的request模块引入,优化变量声明与作用域

内容的提问来源于stack exchange,提问作者Salman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:06:32