私のエンティティ:
public class User {
private Integer id;
private String mail;
private boolean enabled;
// getters and setters
}
ファイル test.json (REST Web サービスからの応答):
{
"_embedded" : {
"users" : [ {
"id" : 1,
"mail" : "admin@admin.com",
"enabled" : true,
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/users/1"
}
}
} ]
}
}
そして私のテストクラス:
public class TestJson {
private InputStream is;
private ObjectMapper mapper;
@Before
public void before() {
mapper = new ObjectMapper();
mapper.registerModule(new Jackson2HalModule());
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
is = TestJson.class.getResourceAsStream("/test.json");
}
@After
public void after() throws IOException {
is.close();
}
@Test
public void test() throws IOException {
PagedResources<Resource<User>> paged = mapper.readValue(is, new TypeReference<PagedResources<Resource<User>>>() {});
Assert.assertNotNull(paged.getContent().iterator().next().getContent().getId());
}
@Test
public void testResource() throws IOException {
PagedResources<User> paged = mapper.readValue(is, new TypeReference<PagedResources<User>>() {});
Assert.assertNotNull(paged.getContent().iterator().next().getId());
}
}
2 番目のテストはパスしますが、最初のテストはパスしません。ユーザーの id プロパティだけが欠落しているため、わかりません (メールと有効なプロパティは空ではありません)...
修正するにはどうすればよいですか? Jackson または Spring Jackson2HalModule のバグですか?
私の spring-hateoas フォークリポジトリを複製し、単体テストを起動することで再現できます。