(注意:我看到了多个关于“Jackson抱怨无法识别属性”的问题的答案,但没有找到一个特别使用RestAssured的对象映射器解决的)。
我有一个RestAssured测试,并且它有效。
我该如何定义和传递自己的映射器?
我有一个RestAssured测试,并且它有效。
@Test
public void objectMappingRelyingOnClassAnnotation() {
User user = RestAssured.get("https://api.github.com/users/andrejss88")
.as(User.class); // must have 'jackson-databind' dependency
Assert.assertEquals(user.login, "andrejss88");
}
它之所以有效,是因为该类被注释,如在这里解释的那样:
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
public String login;
public int id;
}
然而,我想使用重载的 as()
方法,并传递自己的映射器而不使用注释的替代方法:
<T> T as(Class<T> cls, ObjectMapper mapper);
但是Jackson的映射器不起作用:
@Test
public void objectMappingUsingSpecifiedMapper() {
// Doesn't compile - Jackson's ObjectMapper != RestAssured's Mapper
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
AnotherUser user = RestAssured.get("https://api.github.com/users/andrejss88")
.as(AnotherUser.class, objectMapper);
Assert.assertEquals(user.login, "andrejss88");
}
我该如何定义和传递自己的映射器?