public void SubscribeUser() { string contextId = "1"; string testChannel = "testChannel"; string testUser = "******"; string testMessage = String.Format("{0} joined {1}", testUser, testChannel); dynamic sub = new ExpandoObject(); sub.sendChannelJoiningMessage = new Action <string, string>((user, message) => { this.isSent = true; Assert.AreEqual(testUser, user, "the user was not supplied correctly"); Assert.AreEqual(testMessage, message, "the user was not supplied correctly"); }); IRequest request = base.BuildTestRequest().Object; var mockClients = new Mock <IHubCallerConnectionContext <dynamic> >(); mockClients.Setup(m => m.Group(testChannel)).Returns((ExpandoObject)sub); mockGroupManager.Setup(m => m.Add(contextId, testChannel)).Callback(() => this.isSent = true); var mockHubCallerContext = new Mock <HubCallerContext>(request, "1"); ChatHub hub = new ChatHub() { Context = mockHubCallerContext.Object, Clients = mockClients.Object, Groups = mockGroupManager.Object }; hub.JoinChatChannel(testChannel, contextId, testUser); }