Exemple #1
0
        public void ReceiverHandlerWithException()
        {
            var model = new Mock <IModel>();

            var(_, messageProvider, _, connectionFactory) = RabbitMockFactory.Get(model);
            var queueConsumerRabbitMQ = new QueueConsumerRabbitMQ(connectionFactory.Object, messageProvider.Object);

            queueConsumerRabbitMQ.Subscribe += (x) =>
            {
                throw new Exception();
            };

            Exception exception = null;

            queueConsumerRabbitMQ.Error += (obj, ex) =>
            {
                exception = ex.Exception;
            };

            var _consumer = (EventingBasicConsumer)typeof(QueueConsumerRabbitMQ).GetField("_consumer", BindingFlags.NonPublic | BindingFlags.Instance)
                            .GetValue(queueConsumerRabbitMQ);
            var @event = (EventHandler <BasicDeliverEventArgs>) typeof(EventingBasicConsumer).GetField("Received", BindingFlags.NonPublic | BindingFlags.Instance)
                         .GetValue(_consumer);

            @event.Invoke(new EventingBasicConsumer(model.Object), new BasicDeliverEventArgs());

            Assert.NotNull(exception);
            model.Verify(x => x.BasicAck(It.IsAny <ulong>(), It.IsAny <bool>()));
        }
Exemple #2
0
        public void ShutdownHandler()
        {
            var model = new Mock <IModel>();

            var(_, messageProvider, _, connectionFactory) = RabbitMockFactory.Get(model);
            var queueConsumerRabbitMQ = new QueueConsumerRabbitMQ(connectionFactory.Object, messageProvider.Object);

            queueConsumerRabbitMQ.Subscribe += (x) =>
            {
                return(Task.FromResult(new QueueMessageDefault("Hi")));
            };

            var _consumer = (EventingBasicConsumer)typeof(QueueConsumerRabbitMQ).GetField("_consumer", BindingFlags.NonPublic | BindingFlags.Instance)
                            .GetValue(queueConsumerRabbitMQ);
            var @event = (EventHandler <ShutdownEventArgs>) typeof(EventingBasicConsumer).GetField("Shutdown", BindingFlags.NonPublic | BindingFlags.Instance)
                         .GetValue(_consumer);

            @event.Invoke(new EventingBasicConsumer(model.Object), new ShutdownEventArgs(ShutdownInitiator.Application, 0, ""));
        }
Exemple #3
0
        public void ReceiverHandler()
        {
            var model = new Mock <IModel>();

            var(_, messageProvider, _, connectionFactory) = RabbitMockFactory.Get(model);
            var queueConsumerRabbitMQ = new QueueConsumerRabbitMQ(connectionFactory.Object, messageProvider.Object);

            queueConsumerRabbitMQ.Subscribe += (x) =>
            {
                return(Task.FromResult(new QueueMessageDefault("Hi")));
            };

            // Get AsyncEventingBasicConsumer from private field
            var _consumer = (EventingBasicConsumer)typeof(QueueConsumerRabbitMQ).GetField("_consumer", BindingFlags.NonPublic | BindingFlags.Instance)
                            .GetValue(queueConsumerRabbitMQ);

            // Raise event in AsyncEventingBasicConsumer
            var @event = (EventHandler <BasicDeliverEventArgs>) typeof(EventingBasicConsumer).GetField("Received", BindingFlags.NonPublic | BindingFlags.Instance)
                         .GetValue(_consumer);

            @event.Invoke(new EventingBasicConsumer(model.Object), new BasicDeliverEventArgs());

            model.Verify(x => x.BasicAck(It.IsAny <ulong>(), It.IsAny <bool>()));
        }