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

코드가 잘 보이며 byte []와 함께 작동해야합니다. 아래와 같이 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")