public void SubscribingToDepthStream_Should_TriggerWhenDepthStreamMessageIsReceived() { // arrange var socket = new Mock <IWebsocket>(); socket.Setup(s => s.Close()); socket.Setup(s => s.Connect()).Returns(Task.FromResult(true)); socket.Setup(s => s.SetEnabledSslProtocols(It.IsAny <System.Security.Authentication.SslProtocols>())); var factory = new Mock <IWebsocketFactory>(); factory.Setup(s => s.CreateWebsocket(It.IsAny <string>())).Returns(socket.Object); BinanceStreamDepth result = null; var client = new BinanceSocketClient { SocketFactory = factory.Object }; var subscription = client.SubscribeToDepthStream("test", (test) => result = test); var data = new BinanceStreamDepth() { Event = "TestDepthStream", EventTime = new DateTime(2017, 1, 1), Symbol = "test", FirstUpdateId = 1, LastUpdateId = 2, Asks = new List <BinanceOrderBookEntry>() { new BinanceOrderBookEntry() { Price = 1.1m, Quantity = 2.2m }, new BinanceOrderBookEntry() { Price = 3.3m, Quantity = 4.4m } }, Bids = new List <BinanceOrderBookEntry>() { new BinanceOrderBookEntry() { Price = 5.5m, Quantity = 6.6m }, new BinanceOrderBookEntry() { Price = 7.7m, Quantity = 8.8m } } }; // act socket.Raise(r => r.OnMessage += null, JsonConvert.SerializeObject(data)); // assert Assert.IsTrue(subscription.Success); Assert.IsTrue(subscription.Data != null); Assert.IsNotNull(result); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data, result, "Bids", "Asks")); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data.Asks[0], result.Asks[0])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data.Asks[1], result.Asks[1])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data.Bids[0], result.Bids[0])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data.Bids[1], result.Bids[1])); }