代码之家  ›  专栏  ›  技术社区  ›  dermoritz

spring MockMVC中是否构建了一个方法来获取json内容作为对象?

  •  2
  • dermoritz  · 技术社区  · 6 年前

    在另一个项目中,我使用了rest-assured和一些方法直接获得预期的结果。

    下面是一个例子:

        MvcResult result = rest.perform( get( "/api/byUser" ).param( "userName","test_user" ) )
    
                .andExpect( status().is( HttpStatus.OK.value() ) ).andReturn();
        String string = result.getResponse().getContentAsString();
    

    方法返回一个特定类型作为json。如何将此json转换回对象以测试其内容?

    就像 getContentAs(Class)

    1 回复  |  直到 6 年前
        1
  •  11
  •   pvpkiran    6 年前

    据我所知 MockHttpServletResponse
    所以你能做的就是利用杰克森 ObjectMapper 将json字符串转换为特定类型

    像这样的东西

    String json = rt.getResponse().getContentAsString();
    SomeClass someClass = new ObjectMapper().readValue(json, SomeClass.class);
    

    这将给你更多的控制权,让你断言不同的东西。

    MockMvc::perform 回报 ResultActions andExpect 这需要 ResultMatcher

    例如

    mvc.perform(  .....
                    ......
                    .andExpect(status().isOk())
                    .andExpect(jsonPath("$.firstname").value("john"))
                    .andExpect(jsonPath("$.lastname").value("doe"))
                    .andReturn();