public async Task HandleAsync_ExceptionThrown_ExceptionLogged() { var logger = new LoggerSubstitute <FatalExceptionLoggerConsumerBehavior>(); var integrationLogger = new SilverbackIntegrationLogger <FatalExceptionLoggerConsumerBehavior>( logger, new LogTemplates()); var rawEnvelope = new RawInboundEnvelope( new byte[5], null, TestConsumerEndpoint.GetDefault(), TestConsumerEndpoint.GetDefault().Name, new TestOffset()); try { await new FatalExceptionLoggerConsumerBehavior(integrationLogger).HandleAsync( new ConsumerPipelineContext( rawEnvelope, Substitute.For <IConsumer>(), Substitute.For <ISequenceStore>(), Substitute.For <IServiceProvider>()), _ => throw new InvalidCastException()); } catch { // Ignored } logger.Received(LogLevel.Critical, typeof(InvalidCastException)); }
public void HandleAsync_ExceptionThrown_ExceptionRethrown() { var logger = new SilverbackIntegrationLogger <FatalExceptionLoggerConsumerBehavior>( new LoggerSubstitute <FatalExceptionLoggerConsumerBehavior>(), new LogTemplates()); var rawEnvelope = new RawInboundEnvelope( new byte[5], null, TestConsumerEndpoint.GetDefault(), TestConsumerEndpoint.GetDefault().Name, new TestOffset()); Func <Task> act = () => new FatalExceptionLoggerConsumerBehavior(logger).HandleAsync( new ConsumerPipelineContext( rawEnvelope, Substitute.For <IConsumer>(), Substitute.For <ISequenceStore>(), Substitute.For <IServiceProvider>()), _ => throw new InvalidCastException()); act.Should().ThrowExactly <InvalidCastException>(); }