Как написать тест mockMVC для приведенного ниже JSON с комбинацией строк и массивов.
{
"id":1,
"firstName":"NPA",
"lastName":"TAS",
"mobile":"123454321",
"email":"ABCD@GMAIL.COM",
"accounts":[
{
"id":1,
"balance":"$1000",
"custid":"1",
"accNbr":"12345"
}
]
}
Мой код:
@Test
public void testJson() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
mockMvc.perform(get("/acc/1")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$.accounts.id", Matchers.is(1)))
.andExpect(jsonPath("$.accounts.balance", Matchers.is("$1000")))
.andExpect(jsonPath("$.accounts.accNbr", Matchers.is("12345")))
.andExpect(jsonPath("$.accounts.custid", Matchers.is("1")))
.andExpect(jsonPath("$.*", Matchers.hasSize(4)));
}
я получаю исключение
Нет значения в JSON-пути "$ .accounts.id", исключение:
Ожидается найти объект со свойством ['accounts'] в пути $, но найдено 'net.minidev.json.JSONArray».Согласно JsonProvider, это не объект json: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'.
Однако, если я попытаюсь использовать $ .accounts [0] .id я получуисключение
Нет значения в JSON-пути "$ .accounts [0] .id", исключение:
Ожидается найти объект со свойством ['accounts'] в пути $, нонайдено 'net.minidev.json.JSONArray'.Это не объект json, согласно JsonProvider: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'.