gpt4 book ai didi

java - 接受多部分文件的 DELETE 方法的 Mockmvc

转载 作者:行者123 更新时间:2023-12-05 07:26:59 25 4
gpt4 key购买 nike

我正在尝试为 Controller 编写单元测试,该 Controller 具有 DELETE 方法,该方法应接受文件和文本参数。

我知道我可以像这样进行简单的删除:

    MvcResult result = mockMvc.perform(MockMvcRequestBuilders.delete(
"/deletecat/catname/Oscar"))
.andExpect(status().isOK)
.andReturn();

我可以像这样对多部分文件执行 POST:

MockMultipartFile multipartFile = new MockMultipartFile("file", new FileInputStream(TEST_RESOURCES_FOLDER + "Cats.csv"));
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.multipart("/uploadcats")
.file(multipartFile)
.param("ownerName", "Austin Powers"))
.andExpect(status().isOk())
.andReturn();

但是当我试图将它们组合在一起并写下这个时:

 MvcResult result = mockMvc.perform(
MockMvcRequestBuilders.delete(
"/deletecats",
multipartFile, "Austin Powers"))
.andExpect(status().isOk())
.andReturn();

我收到以下错误:“当前请求不是多部分请求”:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Current request is not a multipart request

有没有可能是 HTTP 协议(protocol)不支持对 Multipart 文件进行 DELETE?

最佳答案

看来MockMultipartHttpServletRequestBuilder只支持POST请求,代表HTTP方法的常量is hard-coded in the constructors .这很奇怪,因为至少 POSTPUT 通常与 multipart 一起使用。

恐怕在当前版本中,您必须自己 fork 该类并更改 HTTP 方法。

关于java - 接受多部分文件的 DELETE 方法的 Mockmvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54130293/

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