gpt4 book ai didi

java - 在不上传任何文件的情况下尝试使用 MockMvc 进行测试时出现 "The current request is not a multipart request"

转载 作者:可可西里 更新时间:2023-11-01 16:32:34 27 4
gpt4 key购买 nike

我想测试一个 RequestMapping,它获取有关某个项目的一些信息然后将其持久化,它还允许上传图像。但是,图片上传不是强制性的,我的 HTML 表单使用的是:enctype="multipart/form-data"。我正在尝试在不实际上传任何文件的情况下测试 Controller , Controller 看起来像这样:

@RequestMapping(value="/admin/upload", method=RequestMethod.POST)
public ModelAndView addItem(
@RequestParam(value="id", required=true) Integer id,
@RequestParam(value="name", required=true) String name,
@RequestParam(value="image", required=false) MultipartFile file,
) throws IOException {

// some stuff here

ModelAndView mov = new ModelAndView();
return mov;

}

即使我已将 required 标志设置为 false 我也遇到了缺少参数的问题,但更重要的是,是否可以在允许我在不需要上传任何图像的情况下测试此映射的 mockMvc 请求?

    mockMvc.perform(post("https://localhost/store-admin/items/itemAddSubmit")
.param("id", 1)
.param("name", "testname").with(csrf()))
.andDo(print());

最佳答案

对于多部分请求,您需要使用fileUpload 方法而不是getpost 或其他方法。

按如下方式更新您的代码 -

mockMvc.perform(fileUpload("https://localhost/store-admin/items/itemAddSubmit")
.param("id", 1)
.param("name", "testname").with(csrf()))
.andDo(print());

要实际发送文件,请使用带有 fileUploadfile 函数,如下所示 -

mockMvc.perform(fileUpload("https://localhost/store-admin/items/itemAddSubmit")
.file(myMockMultipartFile)
.param("id", 1)
.param("name", "testname").with(csrf()))
.andDo(print());

其中 myMockMultipartFile 是一个 MockMultipartFile 对象。

关于java - 在不上传任何文件的情况下尝试使用 MockMvc 进行测试时出现 "The current request is not a multipart request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com