首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MultipartFile测试WebtestClient

用MultipartFile测试WebtestClient
EN

Stack Overflow用户
提问于 2019-12-18 15:51:41
回答 1查看 4K关注 0票数 3

我正在为我的控制器类编写单元测试。我在用春光网。因此,我正在用WebTestClient编写测试。这是我的控制器方法

代码语言:javascript
复制
@PutMapping("/updatedocument/{documentType}")
public ResponseEntity<String> updateDocument(@PathVariable String documentType,
                                             @RequestParam("file") MultipartFile file) {
     ...................
}

当我从邮递员或任何rest客户端呼叫时,这段代码就可以工作了。我在编写单元测试时遇到了困难。我得到了

“所需的MultipartFile参数'file‘不存在”

错误。这是我的测试方法。

代码语言:javascript
复制
@Test
void updateDocument() throws IOException {

    .............
    MultipartBodyBuilder multipartBodyBuilder = new MultipartBodyBuilder();
    multipartBodyBuilder.part("file", new ClassPathResource("somefile"))
            .contentType(MediaType.MULTIPART_FORM_DATA)

    webTestClient.put()
            .uri("/customer/updatedocument/ID")
            .body(BodyInserters.fromMultipartData(multipartBodyBuilder.build()))
            .exchange()
            .expectStatus().isOk();
}

任何建议都是非常感谢的。请注意。我使用的是WebTestClient而不是MovkMvc

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 19:07:14

我解决了这个问题。主要的罪魁祸首是我的控制器方法,而不是测试方法。

必须在控制器方法中改变两件事。在使用弹簧网流量(反应性)时,我们应该使用

1.@RequestPart而不是@RequestParam

  1. FilePart而不是MultipartFile

因此控制器方法将如下所示。

代码语言:javascript
复制
@PutMapping("/updatedocument/{documentType}")
public ResponseEntity<String> updateDocument(@PathVariable DocumentType documentType,
                                             @RequestPart("file") FilePart filePart) {
   .....................
}

您可以将FilePart转换为文件对象。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59395681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档