如何使用MockMvc在响应主体中检查JSON

资源:

这是我的控制器内部的方法,其注释为 @Controller

@RequestMapping(value = "/getServerAlertFilters/{serverName}/", produces = "application/json; charset=utf-8")
    @ResponseBody
    public JSONObject getServerAlertFilters(@PathVariable String serverName) {
        JSONObject json = new JSONObject();
        List<FilterVO> filteredAlerts = alertFilterService.getAlertFilters(serverName, "");
        JSONArray jsonArray = new JSONArray();
        jsonArray.addAll(filteredAlerts);
        json.put(SelfServiceConstants.DATA, jsonArray);
        return json;
    }

我期望{"data":[{"useRegEx":"false","hosts":"v2v2v2"}]}作为我的json。

这是我的JUnit测试:

@Test
    public final void testAlertFilterView() {       
        try {           
            MvcResult result = this.mockMvc.perform(get("/getServerAlertFilters/v2v2v2/").session(session)
                    .accept("application/json"))
                    .andDo(print()).andReturn();
            String content = result.getResponse().getContentAsString();
            LOG.info(content);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这是控制台输出:

MockHttpServletResponse:
              Status = 406
       Error message = null
             Headers = {}
        Content type = null
                Body = 
       Forwarded URL = null
      Redirected URL = null
             Cookies = []

Even result.getResponse().getContentAsString()是一个空字符串。

有人可以建议如何在我的JUnit测试方法中获取JSON,以便完成测试用例。

Menuka Ishan:

我使用TestNG进行单元测试。但是在Spring Test Framework中,它们看起来都很相似。所以我相信你的测试如下

@Test
public void testAlertFilterView() throws Exception {
    this.mockMvc.perform(get("/getServerAlertFilters/v2v2v2/").
            .andExpect(status().isOk())
            .andExpect(content().json("{'data':[{'useRegEx':'false','hosts':'v2v2v2'}]}"));
    }

如果要检查json键和值,可以使用jsonpath .andExpect(jsonPath("$.yourKeyValue", is("WhatYouExpect")));

您可能会发现content().json()无法解决,请添加

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何格式化弹簧安置文档与mockMvc响应主体

如何使用Spring MockMVC时从JSON响应中提取值

如何检查提取的响应是否是javascript中的json对象

放心-如何使用POJO验证响应主体

如何使用MockMvc检查响应主体中的字符串

如何向Spring MockMVC添加请求主体

如何使用RSpec检查JSON响应?

如何在Spring Boot Actuator的Trace中包括JSON响应主体?

如何在Spring Boot中获得完整的HttpServletResponse响应主体?

如何在Mocha中的单个声明中检查响应的主体是否具有某些属性

使用Spring MockMVC验证JSON响应中的LocalDate

在HTTPS响应的主体中返回JSON对象

如何在Wiremock的存根响应主体中添加参数?

如何将JSON数据添加到HTML AWS lambda响应主体中?

如何在示例1中将示例1的JSON响应中的值用作示例3请求主体

使用REST Assured,如何检查响应的json对象类型数组中是否存在字段?

如何使用.NET Core中间件将HTML插入到响应主体中

我们如何使用API的JSon响应作为Jmeter中另一个API的JSon主体

如何在Powershell中HTTP PUT文件并捕获响应主体?

如何使用空手道验证非JSON响应主体

如何使用空手道验证非JSON响应主体(2)

如何从响应主体中检索参数

如何在node.js中结束HTTP响应主体

如何使用c#在asp.net中读取json响应(Reseller Club域检查可用性API集成)

spring-mvc:如何使用mockMvc测试Rx响应?

Rails:如何检查使用“ render json:”创建的响应?

使用 Json 主体捕获 Retrofit Call 的列表响应

如何编写“如果响应主体是 JSON()-able”

RestAssured - 想在 RestAssured 中验证 JSON 响应的主体结构