我在邮递员Tests
选项卡中运行脚本时收到错误,尝试检查属性是否未null
.
我的 JSON 响应:
{
"statusMessage": "Success",
"timeStamp": "2018-01-23 05:13:16.7",
"numberOfRecords": 7,
"parties": [
{
"shippingAddress": null,
"shippingDetails": null,
"paExpirationDate": "",
"historyDate": "01/22/2018",
"renewal": {
"renewalRx": "N",
"priorRxNumber": "",
"priorSB": "",
"priorFillNumber": ""
},
"noOfRefillingRemaining": "1",
"ndc": "00074-3799-06",
"rxId": "7004942",
"fillingNumber": "0"
},
{
"shippingAddress": {
"addressLine1": "2150 St",
"addressLine2": "Home Line 2",
"city": "Bronx",
"state": "NY",
"zipCode": "10453",
"addressSeqNumber": "1",
"medFacilityIndicator": "N"
}
}
]
}
我的邮递员脚本是:
var jsonData = JSON.parse(responseBody);
var parties = jsonData.parties;
parties.forEach(function(data){
if(data.shippingAddress!==null && data.shippingAddress.addressLine1 !== null ){
postman.setEnvironmentVariable("addressLine1",data.shippingAddress.addressLine1);
}
我收到以下错误:
"Error running tests for results: TypeError: Cannot read property 'addressLine1' of null"
你可以试试这个,我稍微改变了你的代码,但这会起作用:
var parties = pm.response.json().parties
for(i = 0; i < parties.length; i++) {
if(parties[i].shippingAddress !== null) {
pm.environment.set("addressLine1", parties[i].shippingAddress.addressLine1)
}
}
我使用您提供的架构在本地对此进行了测试,并将2150 St
写入我的环境文件。
您发布的架构似乎不是一个完整的架构,我认为 parties
数组有一个 shippingAddress
属性,该属性要么是null
要么是包含shippingAddress
详细信息的对象 - 我可能是错的,但我无法理解您发布的数据。
我不认为您在 if
语句中搜索的内容是正确的,它不会按照您的方式工作,因为如果第一个条件为 null(如在您的响应数据中(,它将永远不会满足第二个条件,因为对象不会在那里并且shippingAddress.addressLine1
引用将始终显示该错误。
或者你可以像这样使用你的代码:
var jsonData = JSON.parse(responseBody)
var parties = jsonData.parties
parties.forEach(function(data) {
if(data.shippingAddress !== null) {
postman.setEnvironmentVariable("addressLine1",data.shippingAddress.addressLine1)
}
})