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