Как сравнить два значения jsonPath в MockMvc

Я пишу тесты для своего весеннего приложения, используя MockMvc. Предположим, что мой результат json будет иметь следующий формат:

{
  "available": true,
  "location": [
    {"ID": 1, "path": "local1"},
    {"ID": 2, "path": "local2"},
    {"ID": 3, "path": "local3"}
    ],
  "firstItem": "local1"
}

И я хотел бы проверить, что если значение свойства $.firstItem будет равно $.location[0].path или нет, на самом деле они должны быть равны. Какое ожидание я должен поставить в третье ожидание ниже?

mockMvc.perform(get(url))
                .andExpect(jsonPath("$.available", equalTo(true)))
                .andExpect(jsonPath("$.location", hasSize(3)))
                .andExpect(jsonPath("$.firstItem", ????));

Большое спасибо за Вашу помощь!


person Ock    schedule 28.03.2018    source источник


Ответы (1)


Я новичок в этой области, но это работает для меня:

mockMvc.perform(get(url))
            .andDo(mvcResult -> {
                String json = mvcResult.getResponse().getContentAsString();
                String a = JsonPath.parse(json).read("$.firstItem").toString();
                String b = JsonPath.parse(json).read("$.location[0].path").toString();
                Assert.isTrue(a.equals(b),"firstItem is different from location[0].path");
            });
person lojza    schedule 16.05.2018