我想对可能返回 HTTP 状态代码 (SERVICE_UNAVAILABLE) 的服务进行 JUnit 测试。对我来说,由于容器已扩大且尚未可达,因此这可能不可用。在这种情况下,我会让代码重试服务最多 3 次。
我可以模拟 HttpResponse 进行测试,但仅限于一种情况。 Mockito 能否创建一个在第一次尝试时返回一个内容的模拟对象,跟踪尝试次数并根据尝试次数返回不同的结果?我唯一能想到做的就是实现我自己的 HttpResponse。 Mockito 有更好的方法吗?
对连续调用进行存根(迭代器式存根)
https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#10
when(mock.someMethod("some arg"))
.thenThrow(new RuntimeException())
.thenReturn("foo");
//First call: throws runtime exception:
mock.someMethod("some arg");
//Second call: prints "foo"
System.out.println(mock.someMethod("some arg"));
//Any consecutive call: prints "foo" as well (last stubbing wins).
System.out.println(mock.someMethod("some arg"));