private async Task <WebSocketMessageReadStream> SimulateRead(WebSocketMessageReadStreamStub stub) { await Task.Yield(); await Task.Delay(500).ConfigureAwait(false); return(stub); }
public async Task ReceiveData(string testData) { WebSocket socket = A.Fake <WebSocket>(); var readStream = new WebSocketMessageReadStreamStub(new MemoryStream(Encoding.UTF8.GetBytes(testData)), WebSocketMessageType.Text, WebSocketExtensionFlags.None); A.CallTo(() => socket.IsConnected).Returns(true); A.CallTo(socket).WithReturnType <Task <WebSocketMessageReadStream> >().Returns(SimulateRead(readStream)); Client client = new Client(1, socket); client.ProcessConnection().Forget(); object delegateSender = null; string delegateData = null; client.MessageReceived += (sender, data) => { delegateSender = sender; delegateData = data; }; await client.CloseAsync(); Assert.AreSame(client, delegateSender); Assert.AreEqual(testData, delegateData); }