diff --git a/src/Paramore.Fences.Core/Simmy/Fault/FaultGenerator.cs b/src/Paramore.Fences.Core/Simmy/Fault/FaultGenerator.cs index c7686900..5901f8f1 100644 --- a/src/Paramore.Fences.Core/Simmy/Fault/FaultGenerator.cs +++ b/src/Paramore.Fences.Core/Simmy/Fault/FaultGenerator.cs @@ -78,6 +78,6 @@ public FaultGenerator AddException(int weight = DefaultWeight) var generatorDelegate = generator._helper.CreateGenerator(); - return args => new ValueTask(generatorDelegate(args.Context)!.Value.Exception); + return args => new ValueTask(generatorDelegate(args.Context)?.Exception); } } diff --git a/test/Paramore.Fences.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs b/test/Paramore.Fences.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs index ba98c44b..c9e8b852 100644 --- a/test/Paramore.Fences.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs +++ b/test/Paramore.Fences.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs @@ -39,6 +39,33 @@ public void AddException_FactoryWithResilienceContext_Ok() Generate(generator).ShouldBeOfType(); } + [Fact] + public void ImplicitConversion_NoExceptionRegistered_ReturnsNull() + { + // Arrange + var generator = new FaultGenerator(); + + // Act + var fault = Generate(generator); + + // Assert + fault.ShouldBeNull(); + } + + [Fact] + public void ImplicitConversion_AllWeightsZero_ReturnsNull() + { + // Arrange + var generator = new FaultGenerator(); + generator.AddException(weight: 0); + + // Act + var fault = Generate(generator); + + // Assert + fault.ShouldBeNull(); + } + private static Exception? Generate(FaultGenerator generator) { Func> func = generator;