Exemple #1
0
        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>();
        }