У меня реализован прерыватель цепи, который прекрасно работает, когда я его запускаю (это означает, что метод отката запускается всякий раз, когда RestTemplate получает код состояния HTTP между 400 и 599).Однако, когда я пытаюсь выполнить модульное тестирование этого отката, при возврате неверного запроса (HTTP 400) метод отката не вызывается.Почему это?
Фрагмент из класса:
class Test {
@Autowired
private RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "fallback")
public void test() {
HttpEntity<Object> testRequest = new HttpEntity<>();
ResponseEntity<String> response = restTemplate.exchange(
"http://localhost:8080/testurl",
HttpMethod.POST,
testRequest,
String.class);
}
private void fallback() {
System.out.println("Fallback method called");
}
}
Фрагмент из тестового класса
@MockBean
private RestTemplate mockRestTemplate;
@Autowired
Test test;
@Test
public void testRestTemplateReturning400() {
ResponseEntity<String> response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
when(mockRestTemplate.exchange(anyString(), any(), any(), eq(String.class))).thenReturn(response);
test.test();
verify(mockRestTemplate, times(1)).exchange(anyString(), any(), any(), eq(String.class));
}