当前位置: 首页 > 知识库问答 >
问题:

如何在MockMVC中发布多部分/表单数据?

司寇高洁
2023-03-14

我已经创建了一个使用“多部分/表单数据”的控制器

@PostMapping(value="/sample")
public void sample(
    @ModelAttribute("request") SampleRequest request){
    // codes
}

采样器请求对象

@NotNull
private MultipartFile file;

@Pattern(regexp = "^[0-9A-Za-z]*")
private String fileName;

private String other;

现在,我将尝试使用模拟MVC测试它,但我不知道如何将“多部分/表单数据”作为内容传递。我看到很多使用JSON的示例,但没有使用多部分/表单数据

mockMvc.perform(post(path)
        .servletPath(path)
        .headers(headers)
        .contentType(MediaType.MULTIPART_FORM_DATA)
        .content(request)) // -> How to put the multipart/form-data here
        .andDo(print())
        .andReturn();

有没有一种方法可以完成我的请求与多部分/form_data?理想情况下,它需要在MockHttpServletRequest的主体中

MockHttpServletRequest:
  HTTP Method = POST
  Request URI = --path
  Parameters = {}
  Headers = --headers
  Body = null

共有1个答案

司马渝
2023-03-14

我成功地做到了这一点:

      Resource fileResource = new ClassPathResource("YOUR FILE NAME");
    
      assertNotNull(fileResource);

      MockMultipartFile firstFile = new MockMultipartFile( 
            "file",fileResource.getFilename(),
             MediaType.MULTIPART_FORM_DATA_VALUE,
             fileResource.getInputStream());  
    
     assertNotNull(firstFile);
    
     MockMvc mockMvc = MockMvcBuilders.
             webAppContextSetup(webApplicationContext).build();

     MvcResult andReturn = mockMvc.perform(MockMvcRequestBuilders
           .multipart(**YOUR URL**)
           .file(firstFile)
           .headers(**YOUR HEADERS**))
            .andDo(print())
            .andExpect(status().isOk())
            .andReturn();

我在这里看到了这个例子:

https://www.baeldung.com/spring-multipart-post-request-test

 类似资料:
  • 问题内容: 我有一个带有方法的控制器方法,该方法接收multipart / form-data: 我想使用进行测试。不幸的是创建了一个具有方法的实例: 编辑: 当然,我 不能 创建自己的实现,例如 因为具有包本地构造函数。 但是我想知道是否还有其他更方便的 方法?可以这样做吗,可能是我错过了一些现有的类或方法吗? 问题答案: 是的,有一种方法,而且也很简单! 我自己也遇到了同样的问题。尽管我不满意

  • 所以这个HTML代码以正确的格式提交数据给我。 谢了!

  • 这几天我一直被这个问题难住了。如果有人能给我指出正确的方向,我将不胜感激!我一直在想如何通过facebooks graph api发布图像。 我从Facebook上下载了一张图片,它通过图形API显示在画布元素中。我正在修改这个元素,在上面画文本,然后想把它上传回facebook。我被上传卡住了。 以下是我看过的有帮助的链接,但我仍然卡住了: Facebook Graph API——使用JavaS

  • 谢谢你过来。 我想使用fetch api发送一个作为请求的 手术看起来像这样 这里的问题是边界,比如 永远不要将其放入标题中 应该是这样的 当您使用尝试“相同”操作时,如下所示 标题设置正确 所以我的问题是, > 在这种情况下,我如何使的行为完全像? 如果这不可能,为什么? 谢谢大家!这个社区或多或少是我职业成功的原因。

  • 我使用Django REST API和Angular 6作为前端。 我在配置文件模型中定义了一个接受文件输入的ImageField。 在angular应用程序中,我从Base64图像数据生成File对象,并发送到endpoint,标题为Content-type:'multipart/form-data' 编辑2:代码 方法正在使用方法发送数据。

  • 不管怎么说,所有的想法和答案都是极其赞赏的。谢谢你的帮助。