private void PacketReceive_EventCanceled <TPacket, TEvent>(TPacket packet, IPlayer sender) where TPacket : IPacket where TEvent : Event { Action <PacketReceiveEvent <TPacket> >?registeredHandler = null; var events = Mock.Of <IEventManager>(); var log = Mock.Of <ILogger>(); Mock.Get(events) .Setup(em => em.RegisterHandler(It.IsAny <Action <PacketReceiveEvent <TPacket> > >(), log)) .Callback <Action <PacketReceiveEvent <TPacket> >, ILogger>( (handler, log) => registeredHandler = handler); using var signService = new OrionSignService(events, log); var evt = new PacketReceiveEvent <TPacket>(packet, sender); Mock.Get(events) .Setup(em => em.Raise(It.IsAny <TEvent>(), log)) .Callback <TEvent, ILogger>((evt, log) => evt.Cancel()); Assert.NotNull(registeredHandler); registeredHandler !(evt); Assert.True(evt.IsCanceled); Mock.Get(events).VerifyAll(); }