diff --git a/src/Polly.Core/Simmy/Fault/FaultGenerator.cs b/src/Polly.Core/Simmy/Fault/FaultGenerator.cs index c5931c0b161..cfb943f327c 100644 --- a/src/Polly.Core/Simmy/Fault/FaultGenerator.cs +++ b/src/Polly.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/Polly.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs b/test/Polly.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs index 1b7e2cc99a0..fd77255d42f 100644 --- a/test/Polly.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs +++ b/test/Polly.Core.Tests/Simmy/Fault/FaultGeneratorTests.cs @@ -39,6 +39,24 @@ public void AddException_FactoryWithResilienceContext_Ok() Generate(generator).ShouldBeOfType(); } + [Fact] + public void NoExceptionRegistered_ShouldReturnNull() + { + var generator = new FaultGenerator(); + + Generate(generator).ShouldBeNull(); + } + + [Fact] + public void AllWeightsZero_ShouldReturnNull() + { + var generator = new FaultGenerator(); + + generator.AddException(weight: 0); + + Generate(generator).ShouldBeNull(); + } + private static Exception? Generate(FaultGenerator generator) { Func> func = generator;