我有一个单元测试,我想检查在端点中返回的响应。我的问题是,当我打电话给Response#readEntity(MyPojo.class)
时,得到UnrecognizedPropertyException
的原因可能是我很清楚的,在我的POJO类中:
public class Answer {
@NotNull
private QuestionNames questionId;
@NotNull
private Integer optionId;
@JsonProperty("optionId")
public void setOptionId(@NotNull Integer optionId) {
this.optionId = optionId;
}
@NotNull
@JsonProperty("value")
public Integer getValue() {
return this.optionId;
}
@NotNull
public QuestionNames getQuestionId() {
return questionId;
}
public void setQuestionId(@NotNull QuestionNames questionId) {
this.questionId = questionId;
}
}
之所以这样,是因为我必须将答案返回给optionId
命名为value
的客户端,但是当他们发送带有值的新答案时,他们将其称为{{1 }}。现在,我只需创建两个具有相同字段的POJO即可轻松解决问题,只是值字段的名称不同,因此基本上只需:
optionId
,然后在我的public class AnswerIn {
private QuestionNames questionId;
private Integer optionId;
}
public class AnswerOut {
private QuestionNames questionId;
private Integer value;
}
端点中使用AnswerOut
,在GET
中使用AnswerIn
,但这似乎很笨拙。
我已经手动测试了我的解决方案,考虑到将如何使用它,效果很好。但是,当我编写UnitTest时,它失败了,因为它无法准备好响应实体正确获取POST
使用Unrecognized field "value" (class com.test.Answer), not marked as ignorable (2 known properties: "optionId", "questionId"])
和jackson 2.7.8