Api 正文中字段的断言值不匹配

Api 正文中字段的断言值不匹配,api,google-places-api,Api,Google Places Api,我在RestAssured中进行POC时使用了google place搜索API 下面是我得到的答复。我正在编写一个断言来匹配“location”下的“lat”值 我试过的断言如下- body(“obj.candidates[0].geometry.location.lat”,equalTo(“-33.8599358”) { "candidates": [ { "formatted_address": "140 George St, The Roc

我在RestAssured中进行POC时使用了google place搜索API

下面是我得到的答复。我正在编写一个断言来匹配“location”下的“lat”值

我试过的断言如下-

body(“obj.candidates[0].geometry.location.lat”,equalTo(“-33.8599358”)

{
    "candidates": [
        {
            "formatted_address": "140 George St, The Rocks NSW 2000, Australia",
            "geometry": {
                "location": {
                    "lat": -33.8599358,
                    "lng": 151.2090295
                },
                "viewport": {
                    "northeast": {
                        "lat": -33.85824767010727,
                        "lng": 151.2102470798928
                    },
                    "southwest": {
                        "lat": -33.86094732989272,
                        "lng": 151.2075474201073
                    }
                }
            },
            "name": "Museum of Contemporary Art Australia",
            "opening_hours": {
                "open_now": false
            },
            "photos": [
                {
                    "height": 2736,
                    "html_attributions": [
                        "<a href=\"https://maps.google.com/maps/contrib/108440264878062594882/photos\">Kun-Lin Tsou</a>"
                    ],
                    "photo_reference": "CmRaAAAA1K9W8-AwTJ953e-cj2DdF0bhf5uVpnHcmBoSF4Cz5rlEjkODupFUCeGuim6Ryx4j0-jKU-jnpYch1xWV4UfWxbZZhzoXBuY8opP9gVZ_Z03mMyPa71lzYRAf5gAWX4bpEhAcia7kO56eCSu6x7IRSTTBGhTQK4-BGWyFhpvUZESi3axcejZP_Q",
                    "width": 3648
                }
            ],
            "rating": 4.4
        }
    ],
    "status": "OK"
}
{
“候选人”:[
{
“地址”:“澳大利亚新南威尔士州岩石镇乔治街140号,2000年”,
“几何学”:{
“地点”:{
“lat”:-33.8599358,
“液化天然气”:151.2090295
},
“视口”:{
“东北”:{
“lat”:-33.85824767010727,
“液化天然气”:151.21024707928
},
“西南”:{
“lat”:-33.86094732989272,
“液化天然气”:151.207547201073
}
}
},
“名称”:“澳大利亚当代艺术博物馆”,
“开放时间”:{
“立即打开”:错误
},
“照片”:[
{
“高度”:2736,
“html_属性”:[
""
],
“照片参考”:“CmRaAAAA1K9W8-AwTJ953e-CJ2DDF0BHF5UVPNHCMBOSF4CZ5RLEJKODUPFUCTEGUIM6RYX4J0-jKU-JNPYCH1XWV4UFWXBZHZZOXBUY8OPP9GVZ”Z03MYPA71LZYRAF5GAWX4BPECHACIA7KO56ECSU6IRSTBK4-BGWYFHPVUZI3AXEJZP”,
“宽度”:3648
}
],
“评级”:4.4
}
],
“状态”:“确定”
}
但是当我运行程序时,我得到如下错误-

线程“main”java.lang.AssertionError中出现异常:1预期失败。 JSON路径obj.candidates[0].geometry.location.lat不匹配。 预计:-33.8599358 实际值:空

当我使用postman运行请求时,我得到了如上所述的有效响应,并且有针对它的有效数据。我不理解为什么当检查断言时,它会根据实际结果字段得到“Null”值


有人能帮我确定这里的问题吗?

您可以使用jsonpath访问该字段作为响应:

assertThat(response.jsonpath().get("candidates[0].geometry.location.lat"), equalTo("-33.8599358"));

如果出现反序列化异常,请将jackson数据绑定放在pom.xml中。

您会遇到该异常,因为您的响应中没有名为obj的字段。只需从路径表达式中删除
obj
,然后使用
候选[0].geometry.location.lat

从外观上看,我相信您试图使用
obj
引用json负载的“根”。如果是这样,那就知道你不需要这样做。在REST-assured中,路径表达式始终相对于根。但是为了以防万一,您可以使用REST-assured中的
restAssuredJsonRootObject
引用json的根,尽管这不是公共的。来自Johan的检查,他是《放心》的创始人和作者