这是我想测试的方法:
void someMethodThatRetries(){
Failsafe.with( retryPolicy ).get(() -> callServiceX());
}
重试策略如下所示:
this.retryPolicy = new RetryPolicy()
.retryIf( responseFromServiceXIsInvalid() )
.withBackoff( delay, MAX_DELAY, TimeUnit.MILLISECONDS )
此方法调用服务 X 并在特定条件下重试对服务 X 的调用(来自 X 的响应没有特定值)。每次重试都是通过延迟和退避完成的。测试看起来像这样:
@Test
public void retriesAtMostThreeTimesIfResponseIsInvalid() throws Exception {
// Code that verifies that ServiceX got called 3 times. Service is called using a stub, and I am verifying on that stub
}
我正在编写一个测试来验证服务 X 在满足条件时被调用 3 次(允许的最大重试次数为 3 次)。
由于延迟和退避,单元测试需要太多时间。在这种情况下我们应该如何编写测试?
我想到的一种解决方案是对 RetryPolicy 进行单独的测试,它应该重试 3 次,并单独测试它在满足条件时重试的事实。
我该怎么做?