В моем производственном коде мне нужно выполнить команду POST для контроллера, который отвечает StreamingResponseBody . Краткий пример такого кода:
@RestController
@RequestMapping("/api")
public class DalaLakeRealController {
@PostMapping(value = "/downloaddbcsv", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<StreamingResponseBody> downloadDBcsv(@Valid @RequestBody SearchQuery searchRequest) {
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_TYPE, "application/csv")
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=demoStream.csv")
.body(
get3Lines()
);
}
public StreamingResponseBody get3Lines() {
StreamingResponseBody streamingResponseBody = new StreamingResponseBody() {
@Override
public void writeTo(OutputStream outputStream) throws IOException {
outputStream.write("LineNumber111111111\n".getBytes());
outputStream.write("LineNumber222222222\n".getBytes());
outputStream.write("LineNumber333333333\n".getBytes());
}
};
return streamingResponseBody;
}
}
В тестировании я хотел бы посмеяться над ответом этого контроллера. Я прочитал следующую ссылку: Использование MockRestServiceServer для тестирования клиента REST для проверки внешних контроллеров. Но в andRespond mockServer он ожидает ClientHttpResponse или ResponseCreator
mockServer.expect(once(), requestTo("http://localhost:8080/api/downloaddbcsv"))
.andRespond(withSuccess("{message : 'under construction'}", MediaType.APPLICATION_JSON));
Как мне ответить StreamingResponseBody in MockRestServiceServer ?