diff --git a/test/Polly.Core.Tests/CircuitBreaker/Controller/CircuitStateControllerTests.cs b/test/Polly.Core.Tests/CircuitBreaker/Controller/CircuitStateControllerTests.cs index d453f95c4f4..9cae4025dc6 100644 --- a/test/Polly.Core.Tests/CircuitBreaker/Controller/CircuitStateControllerTests.cs +++ b/test/Polly.Core.Tests/CircuitBreaker/Controller/CircuitStateControllerTests.cs @@ -53,7 +53,10 @@ public async Task IsolateAsync_Ok() called.ShouldBeTrue(); var outcome = await controller.OnActionPreExecuteAsync(context); - var exception = outcome.Value.Exception.ShouldBeOfType(); + + Assert.True(outcome.HasValue); + + var exception = outcome.GetValueOrDefault().Exception.ShouldBeOfType(); exception.RetryAfter.ShouldBeNull(); exception.TelemetrySource.ShouldNotBeNull(); @@ -125,7 +128,12 @@ public async Task OnActionPreExecute_CircuitOpenedByValue() using var controller = CreateController(); await OpenCircuit(controller, Outcome.FromResult(99)); - var exception = (BrokenCircuitException)(await controller.OnActionPreExecuteAsync(context)).Value.Exception!; + + var outcome = await controller.OnActionPreExecuteAsync(context); + + Assert.True(outcome.HasValue); + + var exception = outcome.GetValueOrDefault().Exception.ShouldBeOfType(); exception.RetryAfter.ShouldNotBeNull(); exception.TelemetrySource.ShouldNotBeNull(); @@ -149,7 +157,11 @@ await OpenCircuit( { try { - (await controller.OnActionPreExecuteAsync(context)).Value.ThrowIfException(); + var outcome = await controller.OnActionPreExecuteAsync(context); + + Assert.True(outcome.HasValue); + + outcome.GetValueOrDefault().ThrowIfException(); } catch (BrokenCircuitException e) { @@ -217,7 +229,12 @@ public async Task OnActionPreExecute_CircuitOpenedByException() using var controller = CreateController(); await OpenCircuit(controller, Outcome.FromException(new InvalidOperationException())); - var exception = (BrokenCircuitException)(await controller.OnActionPreExecuteAsync(context)).Value.Exception!; + + var outcome = await controller.OnActionPreExecuteAsync(context); + + Assert.True(outcome.HasValue); + + var exception = outcome.GetValueOrDefault().Exception.ShouldBeOfType(); exception.InnerException.ShouldBeOfType(); exception.RetryAfter.ShouldNotBeNull(); exception.TelemetrySource.ShouldNotBeNull(); @@ -276,10 +293,13 @@ public async Task OnActionPreExecute_HalfOpen() // act await controller.OnActionPreExecuteAsync(context); - var error = (await controller.OnActionPreExecuteAsync(context)).Value.Exception; + + var outcome = await controller.OnActionPreExecuteAsync(context); // assert - var exception = error.ShouldBeOfType(); + Assert.True(outcome.HasValue); + + var exception = outcome.GetValueOrDefault().Exception.ShouldBeOfType(); exception.RetryAfter.ShouldNotBeNull(); exception.TelemetrySource.ShouldNotBeNull(); controller.CircuitState.ShouldBe(CircuitState.HalfOpen); @@ -489,7 +509,10 @@ public async Task OnActionFailureAsync_VoidResult_EnsureBreakingExceptionNotSet( // assert controller.LastException.ShouldBeNull(); var outcome = await controller.OnActionPreExecuteAsync(context); - var exception = outcome.Value.Exception.ShouldBeOfType(); + + Assert.True(outcome.HasValue); + + var exception = outcome.GetValueOrDefault().Exception.ShouldBeOfType(); exception.RetryAfter.ShouldNotBeNull(); exception.TelemetrySource.ShouldNotBeNull(); } @@ -530,7 +553,10 @@ public async Task Flow_Closed_HalfOpen_Open_HalfOpen_Closed() TimeSpan advanceTimeRejected = TimeSpan.FromMilliseconds(1); AdvanceTime(advanceTimeRejected); var outcome = await controller.OnActionPreExecuteAsync(context); - var exception = outcome.Value.Exception.ShouldBeOfType(); + + Assert.True(outcome.HasValue); + + var exception = outcome.GetValueOrDefault().Exception.ShouldBeOfType(); exception.RetryAfter.ShouldBe(_options.BreakDuration - advanceTimeRejected); exception.TelemetrySource.ShouldNotBeNull();