RestAssured:chunked文件上传而不是multipart

时间:2016-08-03 07:39:53

标签: spring-mvc file-upload rest-assured

问题

我有一个带签名的控制器

@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而不是多部分进行分块上传请求?

1 个答案:

答案 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)