如何比较MockMvc

时间:2018-03-28 08:43:57

标签: jsonpath mockmvc

我正在使用MockMvc为我的spring应用程序编写测试。假设我的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", ????));

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我是这个领域的新手,但这对我有用:

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");
            });