I am testing a Polly TimeOut policy
public static IAsyncPolicy<HttpResponseMessage> GetTimeoutPolicy(int timeoutSeconds)
{
return Policy
.TimeoutAsync<HttpResponseMessage>(
timeout: TimeSpan.FromSeconds(timeoutSeconds),
timeoutStrategy: TimeoutStrategy.Optimistic);
}
with the following test:
[Fact]
public async Task GetTimeoutPolicy_ThrowsTimeoutRejectedException2()
{
int timeoutSeconds = 1;
var policy = HttpPolicies.HttpPolicies.GetTimeoutPolicy(timeoutSeconds);
await policy.Awaiting(p => p.ExecuteAsync(async () =>
{
await Task.Delay(TimeSpan.FromSeconds(2));
return new HttpResponseMessage(System.Net.HttpStatusCode.OK);
})).Should().ThrowAsync<TimeoutRejectedException>();
}
The test fails if I don’t use the TimeoutStrategy.Pessimistic
strategy, it is the Task.Delay
that cause the issue? How can I solve the issue?