public void MessageHandler_ValidMessage_RegisteredHandlerCalled()
        {
            // Arrange
            MyTarget target = new MyTarget();

            var messageConsumer         = Substitute.For <IMessageConsumer>();
            var serviceProvider         = Substitute.For <IServiceProvider>();
            var logger                  = Substitute.For <ILogger <DomainEventDispatcher> >();
            var eventTypeNamingStrategy = Substitute.For <IEventTypeNamingStrategy>();

            eventTypeNamingStrategy.GetEventTypeName(typeof(MyDomainEvent)).Returns(typeof(MyDomainEvent).FullName);

            DomainEventDispatcher dispatcher = new DomainEventDispatcher(
                _subscriberId, target.domainEventHandlers(), messageConsumer, eventTypeNamingStrategy, logger);

            dispatcher.Initialize();

            // Act
            dispatcher.MessageHandler(DomainEventPublisher.MakeMessageForDomainEvent(aggregateType,
                                                                                     aggregateId, new Dictionary <string, string>()
            {
                { MessageHeaders.Id, messageId }
            },
                                                                                     new MyDomainEvent(), eventTypeNamingStrategy), serviceProvider);

            // Assert
            Assert.True(target.Queue.TryPeek(out var dee));
            Assert.NotNull(dee);
            Assert.AreEqual(aggregateId, dee.AggregateId);
            Assert.AreEqual(aggregateType, dee.AggregateType);
            Assert.AreEqual(messageId, dee.EventId);
        }