public void CallServer_And_Receive_Call_Result() { MockListener <JToken> mockListener = new MockListener <JToken>(); Mock <IWampServer <JToken> > serverMock = new Mock <IWampServer <JToken> >(); serverMock.Setup(x => x.Call(It.IsAny <IWampClient>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <JToken[]>())) .Callback((IWampClient clientParameter, string callId, string procUrl, JToken[] arguments) => { clientParameter.CallResult(callId, new { stuff = "cool" }); }); WampListener <JToken> listener = GetListener(mockListener, serverMock.Object); Mock <IWampClient <JToken> > clientMock = new Mock <IWampClient <JToken> >(); MockConnection <JToken> connection = new MockConnection <JToken>(mFormatter); IWampServer client = GetClient(connection.SideAToSideB, clientMock.Object); listener.Start(); mockListener.OnNext(connection.SideBToSideA); clientMock.Verify(x => x.Welcome(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <string>())); Mock <IWampClient> userClientMock = new Mock <IWampClient>(); client.Call(userClientMock.Object, "a123123", "Test", new { name = "Jack" }); serverMock.Verify(x => x.Call(It.IsAny <IWampClient>(), "a123123", "Test", It.IsAny <JToken[]>())); clientMock.Verify(x => x.CallResult("a123123", It.Is((JToken result) => result.Value <string>("stuff") == "cool"))); }