public void EnterClient_SendsCorrectMessage() { // Arrange Mock <IConnectionManager> manager = new Mock <IConnectionManager>(); Mock <IRealtimeChannel> channel = new Mock <IRealtimeChannel>(); channel.SetupGet(c => c.State).Returns(ChannelState.Attached); Stack <ProtocolMessage> messages = new Stack <ProtocolMessage>(); manager.Setup(c => c.Send(It.IsAny <ProtocolMessage>(), null)).Callback <ProtocolMessage, Action <bool, ErrorInfo> >((m, c) => messages.Push(m)); var target = new Presence(manager.Object, channel.Object, "testClient"); // Act target.EnterClient("newClient", null, null); // Assert Assert.Equal <int>(1, messages.Count); ProtocolMessage msg = messages.Pop(); Assert.Equal <ProtocolMessage.MessageAction>(ProtocolMessage.MessageAction.Presence, msg.Action); Assert.Equal <int>(1, msg.Presence.Length); Assert.Equal <PresenceMessage.ActionType>(PresenceMessage.ActionType.Enter, msg.Presence[0].Action); Assert.Equal <string>("newClient", msg.Presence[0].ClientId); }