Как имитировать java встроенные перечисления, такие как HttpStatus и его методы - PullRequest
1 голос
/ 28 января 2020

Я пытаюсь смоделировать методы HttpStatus, используя mockito

@Autowired
Handler handler;

@Mock
Request request;

@Mock
Response aAResponse;

@Mock
RestHandler restHandler

logger.info("Response's HttpStatus is2xxSuccessful is false");
    try {
        Mockito.when(restHandler.getResponse(request)).thenReturn(aAResponse);
        Mockito.when(aAResponse.getHttpStatus()).thenReturn(HttpStatus.ACCEPTED);
        Mockito.when(aAResponse.getHttpStatus().is2xxSuccessful()).thenReturn(false);
        handler.fetchDetails(notification, provider, mapping);
    } catch (Exception e) {
        logger.error("Exception  -> {}", e.getMessage());
    }

Но

aAResponse.getHttpStatus()

дает мне ноль. Как смоделировать значения перечисления и его методы с помощью Mockito. Правильно ли имитировать значения перечислений и их методы?

final Response response = restHandler.getResponse(request);

Я знаю, что ответ является окончательным, и mockito не может смоделировать конечные объекты, но для этого я следовал за ответом { ссылка }

1 Ответ

0 голосов
/ 28 января 2020

Зачем вам издеваться над перечислением, если вы можете высмеивать метод, который возвращает перечисление?

Заменить

Mockito.when(aAResponse.getHttpStatus().is2xxSuccessful()).thenReturn(false);

на

Mockito.when(aAResponse.getHttpStatus()).thenReturn(HttpStatus.NOT_FOUND);

Вы не делаете хочу, чтобы поддельное перечисление возвращало указанное значение c. Вы хотите, чтобы ответ имел статус с неуспешным кодом ошибки ...

...