我正在为控制器类编写单元测试。我正在使用spring webflux。因此,我正在使用WebTestClient
编写测试。这是我的控制器方法
@PutMapping("/updatedocument/{documentType}")
public ResponseEntity<String> updateDocument(@PathVariable String documentType,
@RequestParam("file") MultipartFile file) {
...................
}
当我从Postman或任何其他客户打电话时,此代码有效。我在编写单元测试时遇到困难。我正在
“不存在必需的MultipartFile参数'file'”
错误。这是我的测试方法。
@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
答案 0 :(得分:0)
我能够解决此问题。罪魁祸首是我的控制器方法而不是测试方法。
必须在控制器方法中更改几件事。使用弹簧幅面助焊剂(活性)时,我们应该使用
1。@RequestPart
而不是@RequestParam
2.用FilePart
代替MultipartFile
因此,控制器方法将如下所示。
@PutMapping("/updatedocument/{documentType}")
public ResponseEntity<String> updateDocument(@PathVariable DocumentType documentType,
@RequestPart("file") FilePart filePart) {
.....................
}
您可以将FilePart转换为File对象。