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?