获取 找不到空值时无法读取邮递员脚本中的属性



我在邮递员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)
    }
})

最新更新