Return 不同的值取决于时间值

Return different value depends on times value

循环中有调用方法的代码,我想测试方法在第一次尝试中抛出异常 2 次,然后 return 是一个有效值的情况。 我使用 JMockit 编写了以下代码:

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

在这种情况下,它 someService::call 总是 returns entity

如何在前两个调用中 return exception 然后在测试中 return entity

Try this

我觉得是这样的:

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

应该可以

与任何其他模拟 API 一样,按所需顺序记录期望的每个期望结果:

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