Я пытаюсь создать ClientResponse
в тесте и использовать его для тестирования сервиса, который также выполняет десериализацию стандартным способом response.bodyToMono(..class..)
. Но, похоже, что-то не так в том, как я создаю фальшивый ответ клиента. Потому что я получаю UnsupportedMediaTypeException
в тестах.
Тем не менее тот же самый код прекрасно работает во время выполнения приложения SpringBoot, когда WebClient возвращает ClientResponse
(который встроен внутри).
Давайте посмотрим на простейший случай, который завершается с
org.springframework.web.reactive.function.UnsupportedMediaTypeException:
Content type 'application/json' not supported for bodyType=java.lang.String[]
void test()
{
String body = "[\"a\", \"b\"]";
ClientResponse response = ClientResponse.create(HttpStatus.OK)
.header(HttpHeaders.CONTENT_TYPE,
MediaType.APPLICATION_JSON_VALUE)
.body(body)
.build();
String[] array = response.bodyToMono(String[].class).block();
assertEquals(2, array.length);
}
Пожалуйста, помогите мне понять, как должен формироваться ответ клиента, чтобы обеспечить стандартную (json -> объект) десериализацию в тестовой среде.