public async void Should_callNextPipelineMiddleware()
        {
            //Arrange
            var dummyPolicy = Policy.Handle <Exception>().RetryAsync(0);

            var resiliencyMiddleware = new DefaultResiliencyMiddleware(
                Mock.Of <ILogger <DefaultResiliencyMiddleware> >());

            var sentMessage            = new { Field = "value" };
            var isNextMiddlewareCalled = false;
            var envelope = new MessagingEnvelope(new System.Collections.Generic.Dictionary <string, string>(), sentMessage);

            Task Next()
            {
                isNextMiddlewareCalled = true; return(Task.CompletedTask);
            }

            //Act
            await resiliencyMiddleware.Invoke(new MessagingContext(envelope, string.Empty, null), default, Next);
        public async void Should_callNextPipelineMiddleware()
        {
            //Arrange
            var dummyPolicy = Policy.Handle <Exception>().RetryAsync(0);

            var resiliencyMiddleware = new DefaultResiliencyMiddleware(
                Mock.Of <IResiliencyPolicyProvider>(x =>
                                                    x.GetConcurencyExceptionPolicy(It.IsAny <Action <Exception> >()) == dummyPolicy &&
                                                    x.GetOutOfOrderPolicy(It.IsAny <Action <int> >()) == dummyPolicy),
                Mock.Of <ILogger <DefaultResiliencyMiddleware> >());

            var sentMessage            = Mock.Of <IMessage>();
            var isNextMiddlewareCalled = false;
            var envelope = new MessagingEnvelope <IMessage>(new System.Collections.Generic.Dictionary <string, string>(), sentMessage);

            Task Next()
            {
                isNextMiddlewareCalled = true; return(Task.CompletedTask);
            }

            //Act
            await resiliencyMiddleware.Invoke(envelope, default, Next);