我有以下架构用于下面的快乐路径响应
var responseSchema =
{
"type": "object",
"properties": {
"value": {
"type": "object",
"properties":{
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"patientGuid": {"type": "string" },
"givenName": {"type": "string" },
"familyName": {"type": "string" } ,
"combinedName" : {"type": "string" }
},
"required": ["patientGuid","givenName","familyName"]
}
}
}
}
}
};
快乐路径回应:
{
"value": {
"items": [
{
"patientGuid": "e9530cd5-72e4-4ebf-add8-8df51739d15f",
"givenName": "Vajira",
"familyName": "Kalum",
"combinedName": "Vajira Kalum"
}
],
"href": "http://something.co",
"previous": null,
"next": null,
"limit": 10,
"offset": 0,
"total": 1
},
"businessRuleResults": [],
"valid": true
}
我检查条件是否验证响应模式是否正确:
if(responseBody !== null & responseBody.length >0)
{
var responseObject = JSON.parse(responseBody);
if(tv4.validate(responseObject, responseSchema))
{
// do something
}
else
{
// log some msg
}
}
架构验证条件(嵌套if)即使在我收到错误响应时也会通过。
{
"value": {
"items": [],
"href": "http://something.co",
"previous": null,
"next": null,
"limit": 10,
"offset": 0,
"total": 0
},
"businessRuleResults": [],
"valid": true
}
我在这里做错了吗?为什么响应模式验证没有失败,因为响应没有必填字段? 提前感谢您的帮助
-ChinS
答案 0 :(得分:1)
当我运行你的代码并从响应数据中删除一个属性时,它似乎工作正常:
我会建议一些事情 - tv4
模块不是很棒,它没有被积极地工作(我认为这几年)并且邮差上提出了一些投诉/问题关于它有多糟糕并且要求在原生应用程序中替换它的项目。
您是否考虑过创建测试以检查架构?这是非常基础的,可以很容易地重构并包含在某些逻辑中,但它会检查您的响应的不同值类型。
pm.test("Response data format is correct", () => {
var jsonData = pm.response.json()
// Check the type are correct
pm.expect(jsonData).to.be.an('object')
pm.expect(jsonData.value).to.be.an('object')
pm.expect(jsonData.value.items).to.be.an('array')
pm.expect(jsonData.value.items[0]).to.be.an('object')
// Check the value types are correct
pm.expect(jsonData.value.items[0].combinedName).to.be.a('string')
pm.expect(jsonData.value.items[0].givenName).to.be.a('string')
pm.expect(jsonData.value.items[0].familyName).to.be.a('string')
pm.expect(jsonData.value.items[0].patientGuid).to.a('string')
});
您正在使用的语法现在是旧样式,您不再需要JSON.parse(responseBody)
响应正文,因为pm.response.json()
基本上做同样的事情。