单元测试睡眠时间Polly等待重试策略

问题描述

我想编写一个单元测试,以查看执行是否在指定的持续时间内处于休眠状态。我遇到了SystemClock的一部分Polly.Utilities,但是我正在寻找类似于此处WaitAndRetrySpecs提到的Polly单元测试的实现,它看起来像这样

 [Fact]
 public void Should_sleep_for_the_specified_duration_each_retry_when_specified_exception_thrown_same_number_of_times_as_there_are_sleep_durations()
 {
      var totalTimeSlept = 0;

      var policy = Policy
            .Handle<DivideByZeroException>()
            .WaitAndRetry(new[]
            {
               1.Seconds(),2.Seconds(),3.Seconds()
            });

      SystemClock.Sleep = span => totalTimeSlept += span.Seconds;

      policy.RaiseException<DivideByZeroException>(3);

      totalTimeSlept.Should()
                      .Be(1 + 2 + 3);
  }

当前我的政策如下

var customPolicy = Policy
                     .Handle<SqlException>(x => IsTransientError(x))
                     .WaitAndRetryAsync(
                      3,(retryAttempt) => getSleepDurationByRetryAtempt(retryAttempt)
                     );

我想测试政策制定的总体时间。对于每次重试尝试[1,2,3],睡眠时间为[1,3]。 在全部3次重试之后,总睡眠时间应为1 + 2 + 3 =6。此测试与上面链接中提到的Polly规格非常相似。

问题::我如何为customPolicy编写单元测试,以测试类似于Polly规范的总睡眠时间。我想看一个实现或编写单元测试的说明。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)