Java HttpsStatusCodeException返回null:Spring引导
在这里,我使用Junit5,模拟rest模板调用以返回HttpClientErrorException,但会引发空指针异常。我无法理解为什么在指定行返回Null 休息通话Java HttpsStatusCodeException返回null:Spring引导,java,spring-boot,junit,mockito,Java,Spring Boot,Junit,Mockito,在这里,我使用Junit5,模拟rest模板调用以返回HttpClientErrorException,但会引发空指针异常。我无法理解为什么在指定行返回Null 休息通话 ResponseEntity<Object> obj; try{ obj=restTemplate.postForEntity(url, requestObj, Object.class); }catch(HttpStatusCodeException ex){ ex.getMessag
ResponseEntity<Object> obj;
try{
obj=restTemplate.postForEntity(url, requestObj, Object.class);
}catch(HttpStatusCodeException ex){
ex.getMessage();
throw new CustomError(ex.getStatusCode()); //ex.getStatusCode is Null and throws Null Pointer Exception
}catch(Exception ex){
throw....
}
有两个选项可以解决此问题,您需要提供
HttpClientErrorException
的模拟及其使用的方法,或者需要将exception对象的实例传递给throw语句
HttpClientErrorException mockedException = mock(HttpClientErrorException.class);
when(mockedException.getStatusCode()).thenReturn(HttpStatus.NOT_FOUND);
...
when(restTemplate.postForEntity(anyString(),any(),eq(Object.class)))
.thenThrow(mockedException);
或
HttpClientErrorException mockedException = mock(HttpClientErrorException.class);
when(mockedException.getStatusCode()).thenReturn(HttpStatus.NOT_FOUND);
...
when(restTemplate.postForEntity(anyString(),any(),eq(Object.class)))
.thenThrow(mockedException);
when(restTemplate.postForEntity(anyString(),any(),eq(Object.class)))
.thenThrow( new HttpClientErrorException(HttpStatus.NOT_FOUND));