javascript - JS库检查http响应负载中是否返回了额外的数据字段?
问题描述
我目前正在为另一个团队正在开发的 API 构建端到端测试,我想知道是否有人知道我可以用来测试 HTTP 响应正文中是否返回额外字段的 JS 库? 此功能的目的是在开发团队通过测试对 api 进行更改时通知 QA 团队,而不是开发人员手动让我们知道他们已经创建了更新。我知道这可以手动实现,但如果轮子已经存在,我宁愿避免重新创建它,哈哈。
示例场景:
API 调用:GET 用户 - 返回:用户名、用户 ID 和用户生日。
使用提议的功能,如果开发团队对 Get 用户调用进行了更新,它会返回以下内容 - 返回:用户名、用户 ID、用户生日和用户地址。
测试无法让我知道返回了一个不期望的额外字段(用户地址)。
解决方案
您需要模式验证,那里有像ajv这样的库。
var ajv = new Ajv({ allErrors: true }); // options can be passed, e.g. {allErrors: true}
// API call: GET user - returns : user name, user ID and user birthday.
// With proposed functionality, if the dev team made updates to the Get user call, and it returns the following - return : user name, user ID, user birthday AND user address.
var schema = {
type: "object",
properties: {
userName: {
type: "string",
},
userId: {
type: "string",
},
userBirthdate: {
type: "string",
},
},
required: ["userName", "userId", "userBirthdate"],
additionalProperties: false,
};
var validate = ajv.compile(schema);
var validUser = {
userName: "John",
userId: "john",
userBirthdate: "01012000",
};
var invalidUser = {
userName: "John",
userId: "john",
userBirthdate: "01012000",
userAddress: "World",
};
var valid = validate(validUser);
console.log(`Valid user is valid: ${valid}`);
valid = validate(invalidUser);
console.log(`Invalid user is valid: ${valid}`);
console.log('Validate errors:', validate.errors);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/6.6.2/ajv.min.js"></script>
推荐阅读
- powershell - 我可以使用以下 PowerShell 命令检查端口可用性“netstat -ano | findstr 161”h
- python-3.x - 如何从 .7z 存档中读取包含大量数据的 csv 文件?
- python - 放置条件后如何从csv文件中获取标题
- spring-boot - 如何在 JoinFaces/Spring Boot 中设置 Undertow 属性?
- r - 使用R中曲线的切线查找数据集的最大值
- xml - 在 xml 根标签中添加命名空间
- java - 即使需要传递,在运行时也找不到 Java 模块
- ruby-on-rails - 如何在没有任何副作用的情况下使用 activeadmin 设置 cancan?
- asp.net - 始终使用 ajax 获取默认链接
- qr-code - 世博会:一开始就“出了点问题”