Возвращаемое значение зависит от времени - PullRequest
0 голосов
/ 18 апреля 2019

Существует код, который вызывает метод в цикле, я хочу проверить случай, когда метод выдает исключение в течение 2 первых попыток, а затем возвращает действительное значение.Используя JMockit, я пишу следующий код:

new Expectations() {{
    someService.call(anyString);
    times = 2;
    result = exception;
    someService.call(anyString);
    result = entity;
}};

В этом случае он someService::call всегда возвращает entity.

Как я могу вернуть exception для первых двух вызовов, а затем вернуть entity в тесте?

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Как и в любом другом API-интерфейсе, запишите каждый желаемый результат ожидания в нужной последовательности:

new Expectations() {{
    someService.call(anyString);
    result = exception;
    result = exception;
    result = entity;
}};
0 голосов
/ 18 апреля 2019

Попробуйте это

Я думаю что-то вроде:

 Service someService = mock(Service.class);
 when(someService(any()))
   .thenThrow(new RuntimeException())
   .thenThrow(new RuntimeException())
   .thenReturn("foo");

должно работать

...