我有一个带签名的控制器
@RequestMapping(path = "/upload/{imageTitle}", method = POST, produces = {APPLICATION_JSON_VALUE})
public ResponseEntity<EnrollFaceResult> uploadImage(@PathVariable String imageTitle, ServletInputStream imageDataStream) {
// handle upload
}
现在我想使用RestAssured测试逻辑:
given()
.pathParam("imageTitle", "title")
.multiPart(new File(getClass().getResource("image.jpg").toURI()))
.when()
.post("upload/{imageTitle}")
.then()
.statusCode(HttpServletResponse.SC_OK)
问题是imageDataStream
中没有数据。
当我执行PostMan请求时,流包含数据。
不同之处在于PostMan会进行分块数据上传,RestAssured会创建多部分对应物。
有没有办法使用RestAssured而不是多部分进行分块上传请求?
答案 0 :(得分:0)
我会回答我自己的问题。
解决方案位于RequestSpecification.body(File)
。我以前一定忽略了这个方法。
应使用multipart(File)
body(File)
来更正测试代码段
given()
.pathParam("imageTitle", "title")
.body(getClass().getResourceAsStream("image.jpg"))
.when()
.post("upload/{imageTitle}")
.then()
.statusCode(HttpServletResponse.SC_OK)