首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用mockMvc格式化响应体中的Spring文档

如何用mockMvc格式化响应体中的Spring文档
EN

Stack Overflow用户
提问于 2019-01-30 14:33:40
回答 2查看 4.9K关注 0票数 5

我用Spring文档编写API文档。

代码示例:

代码语言:javascript
运行
复制
@Override
public void getById(String urlTemplate, PathParametersSnippet pathParametersSnippet, Object... urlVariables) throws Exception {
    resultActions = mockMvc.perform(get(urlTemplate, urlVariables)
            .principal(principal)
            .contentType(APPLICATION_JSON))
            .andExpect(status().isOk())
            .andDo(print());

    // do..
}

但问题是,测试的结果在一行中得到了回答。而理解返回数据的结构是非常困难的。

回应例子:

代码语言:javascript
运行
复制
MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = {Content-Type=[application/json;charset=UTF-8]}
     Content type = application/json;charset=UTF-8
             Body = {"creator":null,"modifier":null,"modificationTime":null,"creationTime":null,"id":100,"deleted":false,"name":"Name","description":null,"report":[{"creator":"System","modifier":"System","modificationTime":"2019-01-30T14:21:50","creationTime":"2019-01-30T14:21:50","id":1,"name":"Form name","reportType":{"creator":"System","modifier":"System","modificationTime":"2019-01-30T14:21:50","creationTime":"2019-01-30T14:21:50","id":1,"deleted":false,"name":"Raport"},"unmodifiable":true}]}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

此外,我根据收到的答案生成文档,文档中也没有格式化的JSON

我做错了什么?如何为json启用格式?

EN

Stack Overflow用户

发布于 2019-01-30 14:56:38

您可以尝试从ResultActions对象获取mockMvc对象,而不是获取MockHttpServletResponse对象。在此之后,您可以获得响应字段的所有值。在这种情况下,不需要解析字符串。

代码语言:javascript
运行
复制
resultActions = mockMvc.perform(get(urlTemplate, urlVariables)
    .principal(principal)
    .contentType(APPLICATION_JSON))
    .andExpect(status().isOk())
    .andDo(print());

MockHttpServletResponse content = resultActions.andReturn().getResponse();

此外,还可以将MockHttpServletResponse对象数据转换为json。IUf您使用Jacson,而不是为该对象编写自定义序列化程序,将其添加到MockHttpServletResponse并在ObjectMapper中注册。

代码语言:javascript
运行
复制
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(MockHttpServletResponse.class, CustomSerializer.class);
mapper.registerModule(module);
String jsonResult = mapper.writeValueAsString(content);

CustomSerializer应该扩展StdSerializer<MockHttpServletResponse>并覆盖serialize方法。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54442972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档