多次尝试模拟或模拟 HttpResponse

问题描述 投票:0回答:1

我想对可能返回 HTTP 状态代码 (SERVICE_UNAVAILABLE) 的服务进行 JUnit 测试。对我来说,由于容器已扩大且尚未可达,因此这可能不可用。在这种情况下,我会让代码重试服务最多 3 次。

我可以模拟 HttpResponse 进行测试,但仅限于一种情况。 Mockito 能否创建一个在第一次尝试时返回一个内容的模拟对象,跟踪尝试次数并根据尝试次数返回不同的结果?我唯一能想到做的就是实现我自己的 HttpResponse。 Mockito 有更好的方法吗?

java junit mocking mockito
1个回答
0
投票

对连续调用进行存根(迭代器式存根)

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"));
© www.soinside.com 2019 - 2024. All rights reserved.