2016-12-13 13 views
4

私はこのようなシグネチャを持つメソッドを持つ@Controller持っている:私は物理的に任意のファイルを作成せずにマルチパートリクエストを構築したいRestAssuredでマルチパートリクエストを送信するにはどうすればいいですか?

@PostMapping 
@ResponseBody 
public ResponseEntity<Result> uploadFileAndReturnJson(@RequestParam("file") MultipartFile file) {} 

を。

private MultiPartSpecification getMultiPart() { 
    return new MultiPartSpecBuilder("111,222") 
      .mimeType(MimeTypeUtils.MULTIPART_FORM_DATA.toString()) 
      .controlName("file") 
      .fileName("file") 
      .build(); 
} 

Response response = RestAssured.given(this.spec) 
      .auth().basic("admin", "admin") 
      .multiPart(getMultiPart()) 
      .when().post(URL); 

は、残念ながら、私はその応答を受け取っ:

必要な要求部「ファイル」の

を提示していない私はRestAssuredユニットテストを見てみましたし、それはそう、私はこのようにそれをやってみました私はそれを正しくやっている。 Stringの代わりにbyte []またはInputStreamを渡そうとすると、例外がスローされます。

リピート不可能なリクエストエンティティでリクエストを再試行できません。

ありがとうございました。

答えて

3

コードは正常に見え、バイト[]で動作するはずです。以下のようにMultiPartSpecBuilder(byte[] content)を使用できます。

private MultiPartSpecification getMultiPart() { 
     return new MultiPartSpecBuilder("Test-Content-In-File".getBytes()). 
       fileName("book.txt"). 
       controlName("file"). 
       mimeType("text/plain"). 
       build(); 
    } 

バイト[]で取得しているエラーの詳細はhttps://github.com/rest-assured/rest-assured/issues/507にあります。これに応じて、以下のようなプリエンプティブな基本認証を試してください。

.auth().preemptive.basic("admin", "admin") 
関連する問題