public void TestAddRemoveSubscriber() { var foo = new Mock <EventHandler>(); var bar = new Mock <EventHandler>(); var eventSubscriber = new Mock <IEventSubscriber>(); eventSubscriber.Setup((o) => o.GetSubscribedEvents()) .Returns(new Dictionary <string, EventHandler>() { { "foo", foo.Object }, { "bar", bar.Object }, }); dispatcher.AddSubscriber(eventSubscriber.Object); dispatcher.Dispatch("foo", this); foo.Verify((o) => o.Invoke(this, It.IsAny <BucketEventArgs>()), Times.Once); bar.Verify((o) => o.Invoke(this, It.IsAny <BucketEventArgs>()), Times.Never); dispatcher.RemoveSubscriber(eventSubscriber.Object); dispatcher.Dispatch("bar", this); foo.Verify((o) => o.Invoke(this, It.IsAny <BucketEventArgs>()), Times.Once); bar.Verify((o) => o.Invoke(this, It.IsAny <BucketEventArgs>()), Times.Never); }