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

MockMVC JsonPath响应正文为空?

MockMVC是一个用于模拟和测试Spring MVC应用程序的框架。JsonPath是一个用于在JSON文档中查找和提取数据的库。当使用MockMVC进行测试时,有时会遇到JsonPath响应正文为空的情况。

出现这种情况可能有以下几个原因:

  1. 测试代码中的问题:首先,需要检查测试代码中是否正确设置了响应正文。确保在进行模拟请求后,正确设置了响应的内容,并且该内容是一个有效的JSON格式。
  2. 接口返回数据为空:如果被测试的接口在实际运行时返回的数据为空,那么在进行模拟测试时,JsonPath响应正文也会为空。这可能是由于接口逻辑问题、数据库查询结果为空或其他原因导致的。
  3. JsonPath表达式错误:JsonPath使用一种特定的语法来指定要提取的数据路径。如果JsonPath表达式错误,可能无法正确匹配到响应正文中的数据。需要检查JsonPath表达式是否正确,并确保它与响应正文中的数据路径匹配。

解决这个问题的方法如下:

  1. 检查测试代码:确保测试代码中正确设置了响应正文,并且该内容是一个有效的JSON格式。可以使用MockMVC提供的方法来设置响应正文,例如andExpect(content().json("{...}"))
  2. 检查接口返回数据:如果接口返回数据为空,需要检查接口的逻辑和数据源,确保在测试时能够返回有效的数据。
  3. 检查JsonPath表达式:确保JsonPath表达式正确,并与响应正文中的数据路径匹配。可以使用JsonPath提供的方法来测试表达式,例如JsonPath.read(responseBody, "$.path.to.data")

对于MockMVC和JsonPath的更详细信息和使用示例,可以参考腾讯云的相关产品和文档:

  • MockMVC相关产品:腾讯云无直接相关产品,但可以参考Spring官方文档和示例:Spring MockMVC
  • JsonPath相关产品:腾讯云无直接相关产品,但可以参考JsonPath官方文档和示例:JsonPath

希望以上解答能够帮助你解决MockMVC JsonPath响应正文为空的问题。如果还有其他疑问,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

这里简单说明下上方所导入类的作用,MockMvcRequestBuilder 用于构建 HTTP 请求数据:参数,方式,请求头等等,API 调用方式采用了建造者模式,值得学习;MockMvcResultMatcher 是对响应结果的信息匹配...测试 GET 方法 从最简单的开始入手,当我们实现了一个 GET 方法请求的接口访问用户信息路径: http://localhost:8080/user/1 此时要实现的测试代码如下: @Test...另外,上述的测试方法实现里通过status().isOk()断言了响应 200,通过 jsonPath("$.username").value("test") 断言了响应结果 json 数据时,username...字段的值 test,这里借助了 MockMvcResultMatchers.jsonPath 实现对 json 数据快速提取,想要进一步学习的话可以搜索 jsonPath 了解。...这里官方提供了 MockMvcBuilders 帮助我们构建全局的 MockMvc,并且可以进行全局默认的配置,定义一些公共操作,比如打印结果,断言响应码等等,具体实现方法可以参见下方代码示例: @SpringBootTest

93020

Spring Boot应用的测试——Mockito

在之前的几篇文章中,我们都使用bookpub这个应用程序作为例子,今天也不例外,准备测试它提供的RESTful接口是否能返回正确的响应数据。...How Do 通过spirng.io新建的Spring Boot项目提供了一个的测试文件——BookPubApplicationTest.java,内容是: @RunWith(SpringJUnit4ClassRunner.class...这个函数使得可以检测同一个web请求的多个方面,包括HTTP响应状态码(response status),响应的内容类型(content type),会话中存放的值,检验重定向、model或者header...这里需要通过第三方库json-path检测JSON格式的响应数据:检查json数据包含正确的元素类型和对应的值,例如jsonPath("$.name").value("中文测试")用于检查在根目录下有一个名为...分析:使用postman和httpie验证都没问题,说明是Mockmvc的测试用例写得不对,应该主动设置客户端如何解析HTTP响应,用get.accept方法设置客户端可识别的内容类型,修改后的测试用例如下

1.3K10

Spring MVC服务端单元测试工具MockMvc

.get("/user/mm") // 指定请求内容的格式 .contentType(MediaType.APPLICATION_JSON_UTF8)) // 指定响应的预期状态码...200 MockMvcResultMatchers.status().is4xxClientError()表示期望的响应状态码4xx 还可以是3xx、5xx等状态 MockMvcResultMatchers.jsonPath...().value() 表示期望响应的json数据达到什么预期; 如:.jsonPath("$.length()").value(),表示期望响应的JsonArray的元素个数个;如.jsonPath(..."$.username").value("zhangsan"),表示期望响应的JsonObject中的username值zhangsan andReturn获取响应的对象 getResponse()...获取响应的response对象 getResponse().getContentAsString() 获取响应的文本信息 JsonPath说明 详情可参考官方文档: https://github.com

88330

API集成测试:SpringBoot+Junit

("/api/order")) // 得到的HTTP响应状态码应该是200 .andExpect(MockMvcResultMatchers.status...().isOk()) // 得到的http相应内容应该以json方式返回,并且tranceNo属性不能为 .andExpect(MockMvcResultMatchers.jsonPath...("$.tranceNo").isNotEmpty()) // 得到的http相应内容应该以json方式返回,并且orderCreateTime属性不能为...关注点不同:单元测试关注函数的行为,(API)集成测试关注API的行为 粒度不同:单元测试的粒度单个函数/类,(API)集成测试的粒度单个API 单元测试与集成测试的目标以及它们的适用场景?...函数行为可以理解函数返回值、是否抛异常等 API行为可以理解http响应状态码、响应数据、是否超时等 集成测试的优势是什么?

54930

SpringBoot基础之MockMvc单元测试

真实对象速度很慢(例如,一个完整的数据库,在测试之前可能需要初始化); 真实的对象是用户界面,或包括用户界面在内; 真实的对象使用了回调机制; 真实对象可能还不存在; 真实对象可能包含不能用作测试(而不是实际工作...* 6、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情 * 比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。...*/ mockMvc.perform(MockMvcRequestBuilders .get("/hello") // 设置返回值类型utf-8,否则默认为ISO-8859-1 .....attribute("icon", bytes)) //验证属性相等性 .andExpect(view().name("success")); //验证视图 5.JSON请求/响应验证.../articles/JsonPath/ String errorBody = "{id:1, name:zhang}"; MvcResult result = mockMvc.perform

11.3K21

如何在 SpringSpring Boot 中做参数校验?你需要了解的都在这里!

JSR提供的校验注解: @Null 被注释的元素必须 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须 true @AssertFalse...被注释的元素必须 false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值...("sex").value("sex 值不在可选范围")) .andExpect(MockMvcResultMatchers.jsonPath("name").value...("name 不能为")) .andExpect(MockMvcResultMatchers.jsonPath("email").value("email 格式不正确"...@Column(nullable = false) : 是JPA声明列为非的方法。 总结来说就是即前者用于验证,而后者则用于指示数据库创建表的时候对表的约束。

1.2K50

一分钟上手SpringBootTest,单元测试如此简单

Spring 的测试支持 AssertJ: 提供了流式的断言方式 Hamcrest: 提供了丰富的matcher Mockito: mock框架,可以按类型创建mock对象,可以根据方法参数指定特定的响应...JSONassert: JSON提供了断言功能 JsonPath: JSON提供了XPATH功能 编写单元测试基类 @RunWith(SpringRunner.class) @SpringBootTest...@AutoConfigureMockMvc 注解是用于自动配置 MockMvc,加上这个注解之后就可以直接通过 @Autowired 注入 MockMvc @WebAppConfiguration 注解声明为集成测试加载的...验证规则,验证控制器执行完成后结果是否正确,此处是验证状态是否是200 andDo 方法是添加一个结果处理器,比如在此处是 andDo(MockMvcResultHandlers.print())输出整个响应结果信息...参考 SpringBoot Test及注解详解Spring Boot Test (二、注解详解)MockMvc详解

1.8K40

Spring Boot 应用的测试Spring Boot 应用的测试

1.1 准备工作 本节先来创建一个基于Spring MVC、 Spring Data JPA的 Spring Boot, 完成Dao 层、 Service 层、Controller 层代码的编写,后面的测试代码的编写做准备...role", Matchers.equalTo("ROLE_USER"))) } } 其中, MockMvc是一个被final修饰的类型,该类无法被继承使用。...andExpect() 是ResultActions中成员,入参是ResultMatcher类型: ResultActions andExpect(ResultMatcher matcher) 在发送请求后对响应结果进行匹配校验时调用...提示:更多关于 JsonPath 的内容可以参考: https://github.com/json-path/JsonPath 。...Spring Boot 应用对Web层测试提供强大的支持:采用MockMvc方式测试Web请求,根据传递的不用参数以及请求返回对象反馈信息进行验证测试。

1.5K30
领券