public async Task InvokeAsync_Succeeds_DoesntInvokeFallback() { const string value = "value"; var command = new SuccessfulEchoCommandWithFallback(value); var result = await command.InvokeAsync(); Assert.Equal(value, result); Assert.False(command.FallbackCalled); }
public async Task InvokeAsync_SuccessAndFallbackImplemented() { var mockStats = new Mock<IStats>(); var command = new SuccessfulEchoCommandWithFallback("foo") { Stats = mockStats.Object, }; await command.InvokeAsync(); mockStats.Verify(m => m.Elapsed(It.IsRegex(".*fallback.*"), It.IsAny<string>(), It.IsAny<TimeSpan>()), Times.Never); }
public async Task InvokeAsync_WhenBreakerRejectedButFallbackDefined_InvokesFallback() { var expected = new { }; var mockBreaker = new Mock<ICircuitBreaker>(); mockBreaker.Setup(m => m.IsAllowing()).Returns(false); var command = new SuccessfulEchoCommandWithFallback(expected) { CircuitBreaker = mockBreaker.Object, }; var result = await command.InvokeAsync(); Assert.True(command.FallbackCalled); Assert.Equal(expected, result); }