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

当Put和Post请求的请求主体为空时,MockMvc失败

当使用MockMvc进行接口测试时,如果使用PUT或POST请求,并且请求主体为空,可能会导致MockMvc失败。这是因为在这种情况下,MockMvc无法正确解析请求的内容。

解决这个问题的方法是在发送PUT或POST请求时,确保请求主体不为空。可以通过在请求中添加一些数据来解决这个问题,例如一个空的JSON对象{}或一个空的字符串""。

另外,还可以使用MockMvc的content方法来设置请求的内容类型,以确保请求主体被正确解析。例如,可以使用contentType(MediaType.APPLICATION_JSON)来设置请求的内容类型为JSON。

以下是一个示例代码,展示了如何在MockMvc中处理PUT和POST请求的空请求主体:

代码语言:txt
复制
import org.junit.jupiter.api.Test;
import org.springframework.http.MediaType;
import import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

class MyControllerTest {

    private MockMvc mockMvc;

    @BeforeEach
    void setUp() {
        mockMvc = MockMvcBuilders.standaloneSetup(new MyController()).build();
    }

    @Test
    void testPutRequestWithEmptyBody() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.put("/api/myendpoint")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{}"))
                .andExpect(MockMvcResultMatchers.status().isOk());
    }

    @Test
    void testPostRequestWithEmptyBody() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.post("/api/myendpoint")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{}"))
                .andExpect(MockMvcResultMatchers.status().isOk());
    }
}

在上面的示例中,我们使用MockMvc执行了PUT和POST请求,并在请求主体中添加了一个空的JSON对象{}。这样可以确保请求主体不为空,从而避免了MockMvc失败的问题。

需要注意的是,这只是解决了请求主体为空时的MockMvc失败问题,并不代表这是最佳实践。在实际开发中,应根据具体情况来确定是否允许请求主体为空,并在接口设计中进行相应的处理。

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

相关·内容

node后端接收到axiospost请求

node后端接收到axiospost请求???...使用axios发送post请求,传入了Object格式参数,在node后端req.body接收到参数,但是网页上抓包检查,发现请求body确实是携带了参数?...// 配置解析 数据格式表单数据请求中间件 app.use(express.urlencoded({ extended: false })) expres服务器默认无法解析数据格式表单数据请求体...keyvalue标志,就把所有都当做key来处理 body-parser无法解析请求体中JSON字符串,所以收到JSON格式参数,因无法解析,所以req.body就为空了 解决: 1:...在开发中,发送请求入参大多是一个对象。在发送,如果该请求get请求,就需要对参数进行转化。

7010
  • python中property装饰器,迭代器,生成器,http请求postput区别,URLURI, RESTfulAPI

    for循环来迭代它, generator保存是算法,每次调用next(),就计算出下一个元素值,直到计算到最后一个元素,没有更多元素,抛出StopIteration错误 https://pyzh.readthedocs.io...postput区别: 如果一个方法(API)重复执行多次,产生效果是一样,那它就是idempotent 假如我们发送两个http://superblogging/blogs/post/Sample...请求,服务器端是什么样行为?...如果产生了两个博客帖子,那就说明这个服务不是idempotent,因为多次使用产生了不同效果;如果后一个请求把第一个请求覆盖掉了,那这个服务就是idempotent。...前一种情况,应该使用POST方法,后一种情况,应该使用PUT方法, post是发送请求put也是发送请求,但是put后一个请求会把前一个请求覆盖掉。

    1.1K40

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

    对Controller进行单元测试是Spring框架原生就支持能力,它可以模拟HTTP客户端发起对服务地址请求,可以不用借助于诸如Postman这样外部工具就能完成对接口测试。...具体来讲,是由Spring框架中spring-test模块提供实现,详见MockMvc。...初始化MockMvc有2种方式: 方式1:明确指定需要测试“Controller”类进行配置 方式2:基于Spring容器进行配置,包含了Spring MVC环境所有“Controller”类...支持对常见HTTP方法,如:GET,POSTPUT,DELETE等,甚至还支持文件上传请求。...有2种方式: 1.使用JUnit提供Assert断言工具判断返回结果,这是一种非常普遍常见方式 2.在MockMvc框架中可以通过andExpect()方法定义一个或多个预期结果,其中一个期望结果断言失败

    2.3K30

    Spring Security技术栈开发企业级认证与授权(二)使用Spring MVC开发RESTful API

    (POST) 这里主要介绍三个知识点: @RequestBody映射请求体到Java方法参数 @Valid注解BindingResult验证请求参数合法性并处理校验结果 @RequestBody...2)第二个知识点案例,@Valid注解BindingResult验证请求参数合法性并处理校验结果 使用Java类来接受参数是,往往需要对参数进行校验,而校验一般都是使用Hibernate提供校验器来进行校验...这里我向后台传递一个JSON字符串,人为使得usernamepassword两个字段null。这里仅仅简单介绍表单验证注解,下一篇博客将重点介绍。...> birthday= ] 3、用户修改删除请求(PUT、DELETE) 由于RESTful风格API是基于方法来进行区分,所以设计到数据修改删除使用方法是PUTDELETE...,接下来使用案例方式介绍修改删除API开发。

    1.1K41

    如何在 SpringSpring Boot 中优雅地做参数校验?

    PersonController 我们在需要验证参数上加上了@Valid注解,如果验证失败,它将抛出MethodArgumentNotValidException。...)); } } 使用 Postman 验证 [20210421175345253.png] 验证请求参数 验证请求参数(Path Variables Request Parameters)即是验证被...@Data public class Person { // 验证组 DeletePersonGroup 时候 group 字段不能为 @NotNull(groups = DeletePersonGroup.class...) // 验证组 AddPersonGroup 时候 group 字段需要为 @Null(groups = AddPersonGroup.class) private String...JSR 提供校验注解: @Null 被注释元素必须 null @NotNull 被注释元素必须不为 null @AssertTrue 被注释元素必须 true @AssertFalse 被注释元素必须

    2K10

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

    ;缺点是需要在开发过程中多花一点点间去写测试用例(个人觉得这个时间消耗是会在后续便捷操作中还给你)。...* 如果传递用户ID不是数据 {id:\\d+}正则表达式匹配失败情况 * * @throws Exception */ @Test public void...( // MockMvcRequestBuilders // 请求对象 .put("/user/1") // 请求内容个数...MockMvcRequestBuilders 请求构建者对象 get、postput、delete分别表示发送对应Method请求,参数对应接口地址;如 MockMvcRequestBuilders.get...表示请求数据Json格式数据 content 请求后端传递数据;数据格式需要和contentType指定对应 andExpect 添加期望结果 MockMvcResultMatchers.status

    93330

    使用RESTful风格开发Java Web

    实例说明: 在平时 Web 开发中,method 常用值是 GET POST,但是实际上,HTTP 方法还有 PATCH、DELETE、PUT 等其他值,这些方法又通常会匹配如下 CRUD...动作: CRUD 动作 HTTP 方法 Create POST Read GET Update PUT 或 PATCH Delete DELETE 尽管通常来讲,HTTP 方法会映射 CRUD 动作...,但这并不是严格限制,有时候 PUT 也可以用来创建新资源,POST 也可以用来更新资源。...MockMvc简单用法,它能够直接使用网络形式,转换到Controller调用,这样使得测试速度快、不依赖网络环境,而且提供了一套验证工具,这样可以使得请求验证统一而且很方便。...API页面,我们可以点开具体API请求POST类型/users请求例,可找到上述代码中我们配置Notes信息以及参数user描述信息,如下图所示: [1240] API文档访问与调试 在上图请求页面中

    1.3K50

    使用RESTful风格开发Java Web

    实例说明: 在平时 Web 开发中,method 常用值是 GET POST,但是实际上,HTTP 方法还有 PATCH、DELETE、PUT 等其他值,这些方法又通常会匹配如下 CRUD...动作: CRUD 动作 HTTP 方法 Create POST Read GET Update PUT 或 PATCH Delete DELETE 尽管通常来讲,HTTP 方法会映射 CRUD 动作...,但这并不是严格限制,有时候 PUT 也可以用来创建新资源,POST 也可以用来更新资源。...实现了对HTTP请求模拟,从示例代码就能够看出MockMvc简单用法,它能够直接使用网络形式,转换到Controller调用,这样使得测试速度快、不依赖网络环境,而且提供了一套验证工具,这样可以使得请求验证统一而且很方便...API页面,我们可以点开具体API请求POST类型/users请求例,可找到上述代码中我们配置Notes信息以及参数user描述信息,如下图所示: API文档访问与调试 在上图请求页面中

    83830

    SpringBoot单元测试

    MockMvc概念 MockMvc是由spring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...主要有两个实现:StandaloneMockMvcBuilderDefaultMockMvcBuilder。 MockMVC基本步骤 (1) mockMvc.perform执行一个请求。...MockMvcRequestBuilders.get(“/XXX/get”):构造一个请求Post请求使用.post方法 3. contentType(MediaType.APPLICATION_JSON_VALUE...可以在任何时候启用禁用断言验证,因此可以在测试启用断言而在部署禁用断言。 使用断言是判断一个函数或对象一个方法所产生结果是否符合你期望那个结果。...Postman能够发送任何类型HTTP请求(GET, HEAD, POST,PUT..),附带任何数量参数HTTP headers。

    95520

    【原创】关于Spring中参数校验一点思考

    数据校验重要性就不用说了,即使在前端对数据进行校验情况下,我们还是要对传入后端数据再进行一遍校验,避免用户绕过浏览器直接通过一些 HTTP 工具直接向后端请求一些违法数据。...JSR提供校验注解: •@Null 被注释元素必须 null•@NotNull 被注释元素必须不为 null•@AssertTrue 被注释元素必须 true •@AssertFalse 被注释元素必须...@Valid注解,如果验证失败,它将抛出MethodArgumentNotValidException。...模拟请求 Controller 方式来验证是否生效,当然你也可以通过 Postman 这种工具来验证。...验证请求参数(Path Variables Request Parameters) Controller: 一定一定不要忘记在类上加上 Validated 注解了,这个参数可以告诉 Spring 去校验方法参数

    97210

    SpringBoot2 集成测试组件,七种测试手段对比

    ,自测根本目的是自己提前解决可能出现问题;如果缺少自测提测两个关键步骤,那么问题就会被传递给更多用户,产生更多资源消耗; 自测是于开发而言,提测是对专业测试人员而言,如果尽可能在自测阶段就发现问题...但是该工具不适应于复杂流程化测试,例如需要根据上次接口响应报文做分别处理,或者下次请求需要填充某个接口响应数据。...三、Swagger文档 Swagger管理接口文档,是当下服务中很常用组件,通过对接口对象简单注释,快速生成接口描述信息,并且可以对接口发送请求,协助调试,该文档在前后端联调中极大提高效率。...五、Http请求模式 通过模拟接口Http请求实现方式,目前来说个人感觉灵活最高方式,先看简单案例: @RunWith(SpringRunner.class) @SpringBootTest(...,每个节点模拟都具有一定难度,通常在完整流程中涉及到服务库表都是多个,并且请求链路复杂,基于一个灵活自动化流程,去测试完整链路,可以对效率有极大提升。

    41020

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

    MockMvc概念 MockMvc是由spring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...MockMVC基本步骤 (1) mockMvc.perform执行一个请求。 (2) MockMvcRequestBuilders.get(“XXX”)构造一个请求。...现在将上面的一些琐碎知识点汇总一下: mockMvc.perform:执行一个请求 MockMvcRequestBuilders.get(“/XXX/get”):构造一个请求Post请求使用.post...可以在任何时候启用禁用断言验证,因此可以在测试启用断言而在部署禁用断言。 使用断言是判断一个函数或对象一个方法所产生结果是否符合你期望那个结果。...Postman能够发送任何类型HTTP请求(GET, HEAD, POST,PUT..),附带任何数量参数HTTP headers。

    2K10

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

    MockMvc概念 MockMvc是由spring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...MockMVC基本步骤 (1) mockMvc.perform执行一个请求。(2) MockMvcRequestBuilders.get(“XXX”)构造一个请求。...MockMvcRequestBuilders.get(“/XXX/get”):构造一个请求Post请求使用.post方法 3. contentType(MediaType.APPLICATION_JSON_VALUE...可以在任何时候启用禁用断言验证,因此可以在测试启用断言而在部署禁用断言。 使用断言是判断一个函数或对象一个方法所产生结果是否符合你期望那个结果。...Postman能够发送任何类型HTTP请求(GET, HEAD, POST,PUT..),附带任何数量参数HTTP headers。

    29.7K86

    你需要了解都在这里!

    我个人觉得这个统一异常处理一样是后端很容易做好一件事情,同时也是很有必要事情。如果对后端如何统一异常处理不太清楚朋友,也可以留言一下,我后面会分享自己在项目中学到统一异常处理方法。...JSR提供校验注解: @Null 被注释元素必须 null @NotNull 被注释元素必须不为 null @AssertTrue 被注释元素必须 true @AssertFalse...@NotEmpty 被注释字符串必须非 @Range(min=,max=,message=) 被注释元素必须在合适范围内 验证Controller输入 验证请求体(RequestBody...) Controller: 我们在需要验证参数上加上了@Valid注解,如果验证失败,它将抛出MethodArgumentNotValidException。...Postman 验证结果 验证请求参数(Path Variables Request Parameters) Controller: 一定一定不要忘记在类上加上 Validated 注解了,这个参数可以告诉

    1.3K50

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

    MockMvc概念 MockMvc是由spring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...Java实现pdfExcel生成及数据动态插入、导出 MockMVC基本步骤 (1) mockMvc.perform执行一个请求。...MockMvcRequestBuilders.get(“/XXX/get”):构造一个请求Post请求使用.post方法 3. contentType(MediaType.APPLICATION_JSON_VALUE...可以在任何时候启用禁用断言验证,因此可以在测试启用断言而在部署禁用断言。 使用断言是判断一个函数或对象一个方法所产生结果是否符合你期望那个结果。...Postman能够发送任何类型HTTP请求(GET, HEAD, POST,PUT..),附带任何数量参数HTTP headers。

    2.9K20
    领券