2016-12-13 14 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 и кажется, Я делаю это правильно. Если я пытаюсь передать байт [] или InputStream вместо String, генерируется исключение:

Невозможно выполнить повторный запрос с неповторяющимся объектом запроса.

Спасибо за помощь.

ответ

3

Ваш код выглядит отлично, и он должен работать с байтом []. Вы можете использовать MultiPartSpecBuilder(byte[] content), как показано ниже.

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

Детали для ошибки вы получаете с Byte [] доступна на https://github.com/rest-assured/rest-assured/issues/507. В соответствии с этим вы должны попробовать с преимущественным основным auth, как показано ниже.

.auth().preemptive.basic("admin", "admin") 

 Смежные вопросы

  • Нет связанных вопросов^_^