Javascript JS库来检查http响应负载中是否返回了额外的数据字段?

Javascript JS库来检查http响应负载中是否返回了额外的数据字段?,javascript,http,testing,Javascript,Http,Testing,我目前正在为另一个团队正在开发的API构建端到端测试,我想知道是否有人知道我可以用来测试HTTP响应体中是否返回了额外字段的JS库?此功能的目的是在开发团队通过测试对api进行更改时通知QA团队,而不是让开发人员手动通知我们他们已经创建了更新。我知道这可以手动实现,但如果轮子已经存在,我宁愿避免重新创建它lol 示例场景: API调用:获取用户 -返回:用户名、用户ID和用户生日 对于建议的功能,如果开发团队对Get user调用进行了更新,并返回以下内容 -返回:用户名、用户ID、用户生日和用

我目前正在为另一个团队正在开发的API构建端到端测试,我想知道是否有人知道我可以用来测试HTTP响应体中是否返回了额外字段的JS库?此功能的目的是在开发团队通过测试对api进行更改时通知QA团队,而不是让开发人员手动通知我们他们已经创建了更新。我知道这可以手动实现,但如果轮子已经存在,我宁愿避免重新创建它lol

示例场景:

API调用:获取用户 -返回:用户名、用户ID和用户生日

对于建议的功能,如果开发团队对Get user调用进行了更新,并返回以下内容 -返回:用户名、用户ID、用户生日和用户地址


测试将无法让我知道返回了一个不需要的额外字段(用户地址)。

您需要架构验证,有些库类似于

var ajv=new ajv({allErrors:true});//可以传递选项,例如{allErrors:true}
//API调用:GET user-返回:用户名、用户ID和用户生日。
//使用建议的功能,如果开发团队对Get user调用进行了更新,并返回以下内容-return:用户名、用户ID、用户生日和用户地址。
变量模式={
类型:“对象”,
特性:{
用户名:{
键入:“字符串”,
},
用户标识:{
键入:“字符串”,
},
用户出生日期:{
键入:“字符串”,
},
},
必需:[“用户名”、“用户ID”、“用户出生日期”],
附加属性:false,
};
var validate=ajv.compile(模式);
var validUser={
用户名:“John”,
用户ID:“john”,
用户生日:“01012000”,
};
var invalidUser={
用户名:“John”,
用户ID:“john”,
用户生日:“01012000”,
用户地址:“世界”,
};
var valid=验证(validUser);
log(`Valid user is Valid:${Valid}`);
有效=验证(无效用户);
log(`Invalid user is valid:${valid}`);
log('Validate errors:',Validate.errors)

模式验证似乎就是您要寻找的。除了在另一个答案中提到的库之外,您可能还需要检查一个类似的库:

在规范中,您可以使用您选择的断言库对存在
错误
输入
结果
对象进行断言。
上面的示例假设您使用nodejs作为运行测试的环境,但也存在浏览器版本的joi:

您能够使用
Fetch
webapi吗?如果可能的话,它应该具备你所需要的一切:)虽然这是一个相对有趣的问题,但这与堆栈溢出无关(我们不提供购物建议);这可能很适合,但一定要先查看他们的FAQ/帮助页面。非常感谢!关于这个话题我没听说过多少,但我还是按照你说的去做了一些研究,找到了我所需要的工具D@star98我的荣幸:)
const Joi = require('joi');

const schema = Joi.object().keys({
  userName: Joi.string().alphanum().required(),
  userId: Joi.number().required(),
  userBirthDay: Joi.number().required(),
})

const result = Joi.validate({
  userName: 'johndoe',
  userId: 1234567,
  userBirthDay: 1970,
  userAddress: 'John Doe St.'
}, schema);

if (result.error) {
  console.log(result.error.details);
}