JSON路径不匹配

时间:2019-06-15 04:16:12

标签: rest api rest-assured

我试图从主体验证google place search api lat值。但是我收到的JSON路径与异常不匹配。

在这里我分享了json格式的屏幕截图和代码。请解释我在哪里做错了。

RestAssured.baseURI="https://maps.googleapis.com";
given().
        param("input","Museum%20of%20Contemporary%20Art%20Australia").
        param("inputtype","textquery").
        param("fields","photos,formatted_address,name,rating,opening_hours,geometry").
        param("key","<MYAPIKey>").
        when().
        get("/maps/api/place/findplacefromtext/json").
        then().assertThat().statusCode(200).and().
        body("candidates[0].geometry.location.lat",equalTo("-33.8599358"));

例外:

线程“ main”中的异常java.lang.AssertionError:1个期望失败。

JSON候选路径[0] .geometry.location.lat不匹配。

预期:-33.8599358

实际:空

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)     在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     在java.lang.reflect.Constructor.newInstance(Constructor.java:423)     在org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)     在org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)     在org.codehaus.groovy.runtime.callsite.ConstructorSite $ ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)处     在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60)     在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235)     在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:247)     在io.restassured.internal.ResponseSpecificationImpl $ HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:471)     在io.restassured.internal.ResponseSpecificationImpl $ HamcrestAssertionClosure $ validate $ 1.call中(未知来源)     在io.restassured.internal.ResponseSpecificationImpl.validateResponseIfRequired(ResponseSpecificationImpl.groovy:636)     在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处     在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)     在org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite $ PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)处     在org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)     在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)     在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)     在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)     在io.restassured.internal.ResponseSpecificationImpl.content(ResponseSpecificationImpl.groovy:265)     在io.restassured.specification.ResponseSpecification $ content $ 1.callCurrent(未知来源)     在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)     在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)     在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:190)     在io.restassured.internal.ResponseSpecificationImpl.body(ResponseSpecificationImpl.groovy:248)     在io.restassured.internal.ValidatableResponseOptionsImpl.body(ValidatableResponseOptionsImpl.java:268)

enter image description here

1 个答案:

答案 0 :(得分:1)

我只是将参数值替换为

param(“ input”,“澳大利亚当代艺术博物馆”)

代替

param(“输入”,“博物馆%20of%20Contemporary%20Art%20Australia”)

工作正常。