Spring TestRestTemplate parse Error instead of HttpClientErrorException thrown

Viewed 176

I am writing tests for my spring boot application. When writing tests for error responses I noticed that TestRestTemplate client throws parse exception (it's error response, so format is different that standard response) for the following test:

@Test
fun `post should return 404 if object does not exists`() {
    // expect
    restTemplate.exchange(
        localUrl("/api/v1/data/not_exists/"),
        HttpMethod.POST,
        RequestClass(data = randomString()),
        ResponseClass::class.java
    )
}
org.springframework.web.client.RestClientException: Error while extracting response for type

According to spring documentation HttpClientErrorException error should be thrown. https://docs.spring.io/spring/docs/3.0.6.RELEASE_to_3.1.0.BUILD-SNAPSHOT/3.0.6.RELEASE/org/springframework/web/client/HttpClientErrorException.html

There is an ugly solution where I cant set response type to Nothing, but error response content will be lost.

restTemplate.exchange(
    localUrl("/api/v1/data/not_exists/"),
    HttpMethod.POST,
    RequestClass(data = randomString()),
    Nothing::class.java
)

Is this possible to make TestRestTemplate/RestTemplate to throw actual HttpClientErrorException instead of failing on parsing response?

0 Answers
Related