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>())); }