我正在为自己的Spring Boot应用程序编写测试。 为错误响应编写测试时,我注意到TestRestTemplate客户端会为以下测试抛出解析异常(它是错误响应,因此格式与标准响应不同)
@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
应根据Spring文档HttpClientErrorException
引发错误。
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
有一个丑陋的解决方案,我无法将响应类型设置为Nothing
,但是错误响应内容将丢失。
restTemplate.exchange(
localUrl("/api/v1/data/not_exists/"),
HttpMethod.POST,
RequestClass(data = randomString()),
Nothing::class.java
)
是否可以使TestRestTemplate
/ RestTemplate
抛出实际的HttpClientErrorException
而不是解析响应失败?