public async Task InstancedSubscriberReferenceLoss() { var eventBus = serviceProvider.GetService <IRootEventBus>(); Action subscribe = () => { var subscriber = new InternalSubscriber(); eventBus.Subscribe(subscriber); }; subscribe(); Func <Task> test = async() => { GC.Collect(); //subscriber out of scope and collected, should no longer be called await eventBus.PublishAsync(new LogMessage("test")); await TestHelpers.DelayUntil(() => InternalSubscriber.LastMessage is LogMessage); Assert.IsFalse(InternalSubscriber.LastMessage is LogMessage, "Message subscriber was called."); }; await test(); }
public async Task InstancedSubscriberDefaultConstructor() { var eventBus = serviceProvider.GetService <IRootEventBus>(); var subscriber = new InternalSubscriber(); eventBus.Subscribe(subscriber); await eventBus.PublishAsync <TypedMessage>(); await TestHelpers.DelayUntil(() => InternalSubscriber.LastMessage is TypedMessage); Assert.IsTrue(InternalSubscriber.LastMessage is TypedMessage, "Message subscriber was not called."); }