public void SubscribeShouldCreateQueueFanoutAndRegisterWorker()
        {
            // Given

            var queueSession         = new Mock <IMessageQueueSession>();
            var queueCommandExecutor = new Mock <IMessageQueueCommandExecutor>();
            var queueWorkerContainer = new Mock <IMessageQueueWorkerContainer>();

            queueCommandExecutor
            .Setup(m => m.Execute(It.IsAny <Action <IMessageQueueSession> >()))
            .Callback <Action <IMessageQueueSession> >(command => command(queueSession.Object));

            // When

            IExchangeFanoutBinding target = new ExchangeBinding(ExchangeName, queueCommandExecutor.Object, queueWorkerContainer.Object);

            target.Subscribe(QueueName, () => null);

            // Then

            queueSession.Verify(m => m.CreateQueueFanout(It.Is <QueueConfig>(q => q.QueueName == QueueName)));
            queueWorkerContainer.Verify(m => m.RegisterWorker(QueueName, It.IsAny <IMessageQueueWorker>()));
        }