API 测试实践中出现“com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException”错误。请指导我哪里错了?

问题描述 投票:0回答:1

下面是我的主要代码。我正在尝试进行 POJO 反序列化的端到端流程。我还创建了必要的 getter 和 setter。我认为访问令牌正在生成,但之后它就停止了。我与另一个代码进行了交叉验证,但无法在我的代码中找到问题。请帮助我解决我出错的地方。

import static io.restassured.RestAssured.*;

import Pojo.getCourse;
import io.restassured.path.json.JsonPath;
public class oAuth {

    public static void main(String[] args) throws InterruptedException
    {
        try {
                String Response= given().formParam("client_id", "692183103107-p0m7ent2hk7suguv4vq22hjcfhcr43pj.apps.googleusercontent.com")
                .formParam("client_secret", "erZOWM9g3UtwNRj340YYaK_W")
                .formParam("grant_type", "client_credentials")
                .formParam("scope", "trust")
                .when().log().all()
                .post("https://rahulshettyacademy.com/oauthapi/oauth2/resourceOwner/token")
                .then().extract().asString();
                System.out.println(Response);
                
                //get access
                JsonPath js = new JsonPath(Response);
                String token=js.get("access_token");
                
                getCourse gc= given()
                .queryParam("access_token", token)
                .when().log().all()
                .get("https://rahulshettyacademy.com/oauthapi/getCourseDetails").as(getCourse.class);
                
                
                System.out.println(gc.getInstructor());
                System.out.println(gc.getUrl());

    }catch(Exception e) {
        e.printStackTrace();
        }
        
    }

}

这是输出:

Request method: POST
Request URI:    https://rahulshettyacademy.com/oauthapi/oauth2/resourceOwner/token
Proxy:          <none>
Request params: <none>
Query params:   <none>
Form params:    client_id=692183103107-p0m7ent2hk7suguv4vq22hjcfhcr43pj.apps.googleusercontent.com
                client_secret=erZOWM9g3UtwNRj340YYaK_W
                grant_type=client_credentials
                scope=trust
Path params:    <none>
Headers:        Accept=*/*
                Content-Type=application/x-www-form-urlencoded; charset=ISO-8859-1
Cookies:        <none>
Multiparts:     <none>
Body:           <none>
{"access_token":"zY5\/lo\/BctLhD7IPoqI5MA==","token_type":"Bearer","expires_in":3600,"refresh_token":"5Ex59Tctbv5c+xMNH9SnGQ==","scope":"create"}
Request method: GET
Request URI:    https://rahulshettyacademy.com/oauthapi/getCourseDetails?access_token=zY5%2Flo%2FBctLhD7IPoqI5MA%3D%3D
Proxy:          <none>
Request params: <none>
Query params:   access_token=zY5/lo/BctLhD7IPoqI5MA==
Form params:    <none>
Path params:    <none>
Headers:        Accept=*/*
Cookies:        <none>
Multiparts:     <none>
Body:           <none>
java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "linkedIn" (class Pojo.getCourse), not marked as ignorable (6 known properties: "expertise", "courses", "instructor", "services", "url", "linkedin"])
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 500] (through reference chain: Pojo.getCourse["linkedIn"])
    at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.java:30)
    at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
    at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
    at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
    at io.restassured.internal.mapping.ObjectMapping.parseWithJackson2(ObjectMapping.groovy:254)
    at io.restassured.internal.mapping.ObjectMapping$parseWithJackson2$0.callStatic(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:53)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240)
    at io.restassured.internal.mapping.ObjectMapping.deserialize(ObjectMapping.groovy:56)
    at io.restassured.internal.mapping.ObjectMapping$deserialize.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
    at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl.as(RestAssuredResponseOptionsGroovyImpl.groovy:229)
    at io.restassured.internal.RestAssuredResponseOptionsImpl.as(RestAssuredResponseOptionsImpl.java:169)
    at oAuth.main(oAuth.java:26)
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "linkedIn" (class Pojo.getCourse), not marked as ignorable (6 known properties: "expertise", "courses", "instructor", "services", "url", "linkedin"])
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 500] (through reference chain: Pojo.getCourse["linkedIn"])
    at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1153)
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2224)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1793)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1771)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:316)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4899)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3846)
    at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.java:28)
    ... 21 more
rest-assured pojo rest-assured-jsonpath
1个回答
0
投票

我期待任何人的答复,但没有人帮助我。所以到目前为止我自己找到了它。 我发现在“getCourse”类中使用“@JsonIgnoreProperties(ignoreUnknown = true)”注释的1个解决方案,这有助于我解决错误。

© www.soinside.com 2019 - 2024. All rights reserved.