Hystrix Fallback не выполняется в модульном тесте - PullRequest
0 голосов
/ 20 марта 2019

У меня реализован прерыватель цепи, который прекрасно работает, когда я его запускаю (это означает, что метод отката запускается всякий раз, когда 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));
}
...