首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mockMvc断言内容为空(内容不是json)

mockMvc是Spring框架提供的一个单元测试工具,用于模拟HTTP请求并验证控制器的响应结果。在编写单元测试时,可以使用mockMvc对象发送HTTP请求,并对返回的结果进行断言,以验证控制器的行为是否符合预期。

对于mockMvc断言内容为空的情况,可以通过以下方式进行处理:

  1. 确保请求的URI和方法正确:在使用mockMvc发送请求时,需要指定请求的URI和HTTP方法。确保这两个参数与被测试的控制器中的映射方法一致,以确保请求能够正确到达目标控制器。
  2. 断言返回的内容为空字符串:可以使用mockMvc的andReturn()方法获取到返回的MvcResult对象,然后通过MvcResult对象的getResponse()方法获取到响应对象。进一步可以使用响应对象的getContentAsString()方法将返回的内容转化为字符串,并进行断言判断是否为空字符串。
代码语言:txt
复制
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

// 初始化mockMvc
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(yourController).build();

// 发送请求并断言内容为空
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/yourUrl"))
        .andExpect(MockMvcResultMatchers.status().isOk())
        .andReturn();

String content = result.getResponse().getContentAsString();
assertThat(content).isEmpty();
  1. 断言返回的内容为null:如果期望的结果是返回null,可以直接断言返回的MvcResult对象中的getResponse()方法返回的结果为null。
代码语言:txt
复制
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

// 初始化mockMvc
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(yourController).build();

// 发送请求并断言内容为空
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/yourUrl"))
        .andExpect(MockMvcResultMatchers.status().isOk())
        .andReturn();

assertThat(result.getResponse().getContentAsString()).isNull();

mockMvc断言内容为空的应用场景主要是针对不返回任何数据或返回空内容的接口进行测试。例如,一个查询接口,在查询条件不满足时可能会返回空内容,此时可以使用mockMvc进行单元测试,验证接口的行为是否符合预期。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):腾讯云提供的弹性计算服务,可按需创建和管理虚拟服务器实例,满足不同业务场景的需求。产品介绍链接:https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版(TencentDB for MySQL):腾讯云提供的一种高性能、可扩展、高可用的关系型数据库服务,适用于各种业务场景。产品介绍链接:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云内容分发网络(CDN):腾讯云提供的全球覆盖、高可用、低延迟的静态内容分发网络,可加速内容传输,提升用户访问体验。产品介绍链接:https://cloud.tencent.com/product/cdn
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 实战:Spring Boot 程序如何做好 Web 层的测试

    另外,上述的测试方法实现里通过status().isOk()断言了响应码 200,通过 jsonPath("$.username").value("test") 断言了响应结果 json 数据时,username...字段的值 test,这里借助了 MockMvcResultMatchers.jsonPath 实现对 json 数据快速提取,想要进一步学习的话可以搜索 jsonPath 了解。...进阶一些的内容。...总结 好了,以上就是本文关于 Spring Boot 程序如何做好 Web 层的测试的全部介绍,可以看出对 Web 层的测试并不是很复杂,相关 API 的可读性也很高,不过需要注意一点的是,利用 MockMvc...最后,关于MockMvc 相关以及 Spring Boot 实现 Web 层测试等更深入的内容可以参考文末给出的官方文档地址进一步了解,希望本文的介绍对日常开发中有所帮助,后续将继续介绍关于利用 Spring

    97620

    SpringBoot对单元测试支持、常用单元测试功能使用实例

    国内大多数开发人员对单元测试有所忽视,这也是我写本章内容的原因所在。 本章会围绕 Spring Boot 对单元测试的支持、常用单元测试功能的使用实例以及 MockMvc的自动配置机制展开。...Spring Test & Spring Boot Test: Spring Boot 应用提供集成测试和工具支持。 AssertJ:支持流式断言的 Java 测试框架。...JSONassert:一个针对 JSON断言库。 JsonPath:一个 JSON XPath 库。 如果 Spring Boot 提供的基础类库无法满足业务需求,我们也可以自行添加依赖。...在 JUnit4中默认使用的@Test 注解 org.junit.Test,而在 JUnit5 中需要使用 org.junit.jupiter.api.Test.因此,如果在升级的过程中出现莫名其妙的指针异常时...整个单元测试包含以下步骤:准备测试环境、执行 MockMvc 请求、 添加验证断言、添加结果处理器、得到 MvcResult 进行自定义断言/进行下一步的异步请求、卸载测试环境。

    1.7K30

    如何对Spring MVC中的Controller进行单元测试

    ;charset=UTF-8")) // 预期内容类型 .build(); 执行测试 MockMvc支持对常见的HTTP方法,如:GET,POST,PUT,DELETE等,甚至还支持文件上传请求...,有2种方式: 1.使用JUnit提供的Assert断言工具判断返回结果,这是一种非常普遍和常见的方式 2.在MockMvc框架中可以通过andExpect()方法定义一个或多个预期结果,当其中一个期望结果断言失败时.../simple/get").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) // 预期响应状态码...200 .andExpect(content().string("OK")) // 预期返回值字符串“OK” .andDo(print()); } 相比于使用...Junit的断言工具判断返回结果,在MockMvc框架中直接定义预期结果进行断言检查更加简洁。

    2.3K30

    SpringBoot基础之MockMvc单元测试

    真实对象速度很慢(例如,一个完整的数据库,在测试之前可能需要初始化); 真实的对象是用户界面,或包括用户界面在内; 真实的对象使用了回调机制; 真实对象可能还不存在; 真实对象可能包含不能用作测试(而不是实际工作...*/ mockMvc.perform(MockMvcRequestBuilders .get("/hello") // 设置返回值类型utf-8,否则默认为ISO-8859-1 ....执行请求 3、添加验证断言 4、添加结果处理器 5、得到MvcResult进行自定义断言/进行下一步的异步请求 6、卸载测试环境 注意事项:如果使用DefaultMockMvcBuilder进行...ResultActions,MockMvc.perform(RequestBuilder requestBuilder)的返回值,提供三种能力:andExpect,添加断言判断结果是否达到预期;andDo...HttpMessageNotReadableException.class.isAssignableFrom(result.getResolvedException().getClass()));//错误的请求内容

    11.7K21

    SpringBoot单元测试

    ):代表发送端发送的数据格式是application/json;charset=UTF-8 4. accept(MediaType.APPLICATION_JSON):代表客户端希望接受的数据类型application...ResultActions.andExpect(MockMvcResultMatchers.status().isOk()):方法看请求的状态响应码是否200如果不是则抛异常,测试不通过 8....ResultActions.andDo:添加一个结果处理器,表示要对结果做点什么事情,比如此处使用print():输出整个响应结果信息 六、断言的概念 断言(assert),是编程术语,表示一些布尔表达式...,程序员相信在程序中的某个特定点该表达式值真。...安装Postman 官方网站: https://www.getpostman.com/apps 安装后,Postman是介样婶儿滴~~ 参考资料 小名同学 分享计划 博客内容将同步至腾讯云+社区,邀请大家一同入驻

    95720

    保姆级教程:Spring Boot 单元测试

    ):代表发送端发送的数据格式是application/json;charset=UTF-8 4. accept(MediaType.APPLICATION_JSON):代表客户端希望接受的数据类型application...ResultActions.andExpect(MockMvcResultMatchers.status().isOk()):方法看请求的状态响应码是否200如果不是则抛异常,测试不通过 8....ResultActions.andDo:添加一个结果处理器,表示要对结果做点什么事情,比如此处使用print():输出整个响应结果信息 六、断言的概念 断言(assert),是编程术语,表示一些布尔表达式...,程序员相信在程序中的某个特定点该表达式值真。...安装Postman 官方网站: https://www.getpostman.com/apps 安装后,Postman是介样婶儿滴~~ 如果你喜欢本文,欢迎关注我,订阅更多精彩内容 关注我回复「加群

    2.9K20

    使用MockMVC进行Controller单元测试

    引入 由于MockMVC是Spring框架自带的测试组件,因此只要在项目中引入spring-boot-starter-test这个测试套件就可以使用Spring-test库中的MockMVC了。...接下来,将以查询接口例,介绍如何对该接口进行单元测试。...).andExpect(status().isOk()) //返回的状态是200 .andDo(print()) //打印出请求和相应的内容...(200),并打印请求和响应 5)对响应结果进行断言json) 来看一下用例执行过程中,通过print()方法打印的请求和响应 MockHttpServletRequest: HTTP Method...@RequestParam进行了测试(感兴趣的读者可以尝试调用接口时不提供id=1的入参) 3)对接口返回进行了断言 4)对接口返回对象的反序列化进行了断言 下一篇将介绍如何使用MockMvc进行集成测试

    5.5K10

    【保姆级教程】Spring Boot 单元测试

    一、 单元测试的概念 二、单元测试的作用 三、Spring Boot引入的MockMvc的概念 四、Service层的单元测试 五、Controller层的单元测试 六、断言的概念 七、新断言assertThat...):代表发送端发送的数据格式是application/json;charset=UTF-8 4. accept(MediaType.APPLICATION_JSON):代表客户端希望接受的数据类型application...ResultActions.andExpect(MockMvcResultMatchers.status().isOk()):方法看请求的状态响应码是否200如果不是则抛异常,测试不通过 8....ResultActions.andDo:添加一个结果处理器,表示要对结果做点什么事情,比如此处使用print():输出整个响应结果信息 六、断言的概念 断言(assert),是编程术语,表示一些布尔表达式...,程序员相信在程序中的某个特定点该表达式值真。

    29.8K86

    【保姆级教程】SpringBoot单元测试,文末介绍Postman的基本使用

    ("/XXX/save") .content(json.getBytes()) //传json参数 .accept(MediaType.APPLICATION_JSON...):代表客户端希望接受的数据类型application/json;charset=UTF-8 header(“Authorization”,“Bearer XXXX”):代表在报文头添加一些必须的信息...).isOk()):方法看请求的状态响应码是否200如果不是则抛异常,测试不通过 ResultActions.andDo:添加一个结果处理器,表示要对结果做点什么事情,比如此处使用print():输出整个响应结果信息...六、断言的概念 断言(assert),是编程术语,表示一些布尔表达式,程序员相信在程序中的某个特定点该表达式值真。...可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。 使用断言是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果。

    2K10

    Spring Boot下的TDD(测试驱动开发)

    2.在一个单元测试中只允许编写刚好能够导致失败的内容(编译错误也算失败)。 3、只允许编写刚好能够使一个失败的unit test通过的产品代码。 上面是三原则。...在一个现有的测试套件中迁移到使用Hamcrest风格的断言是很容易的,因为其他断言风格可以和Hamcrest的共存。 Mockito — 一个Java mock 框架。...JSONassert — 一个针对JSON进行断言的库。 JsonPath —适用于JSON的XPath。...如果您正在寻找加载完整的应用程序配置,而不是使用嵌入式数据库,则应将@SpringBootTest与@AutoConfigureTestDatabase结合使用,这时候就不要使用这个注解了。...Spring Boot也我们提供了支持。我们只需要在测试类上添加@WebMvcTest自动就配置了MockMvc类。通过MockMvc我们就可以模拟Controller请求了。

    4.9K110

    实践Jenkins集成Cobertura自动化构建SpringBoot工程

    :Xpath在Json中的应用库; (g)JSONassert:Json断言库; spring-boot-starter-test的pom依赖图如下: ?...同时使用断言机制,来判断返回结果是否跟预期的一致。其中,准备好的Json数据放在SpringBoot工程的src/test/resources下面。...    public static final String  GENERATE_ORDERID_API_URL = "/rest/xxxxxxxxx";          //此处鉴权的Json测试数据...最后,通过assertEquals断言机制来确认接口返回是否Http响应的正确编码(200)。如同之前的一样,@After注解的方法cleanUp下执行提前插入数据的回滚和清理。...限于笔者的才疏学浅,对本文内容可能还有理解不到位的地方,如有阐述不合理之处还望留言一起探讨。

    3.3K30
    领券