I'm having some trouble using this. It works very well for one request, but sending another command to the TCP server it throws an exception.
I did look at the followings tests:
https://github.com/MojtabaKiani/Rony.Net/blob/main/tests/Rony.FunctionalTests/MockTcpServerTests.cs
Should it be able to send the mock server multiple requests (like below) or is this not how it is intended to be used?
Example code:
const int port = 4000;
const string command1 = "ping";
const string mockResponse1 = "pong";
const string command2 = "pong";
const string mockResponse2 = "ping";
var tcpServer = new MockServer(new TcpServer(port));
tcpServer.Mock.Send(command1).Receive(mockResponse1);
tcpServer.Mock.Send(command2).Receive(mockResponse2);
tcpServer.Start();
var client = new SocketClient(IPAddress.Loopback.ToString(), port);
await client.Connect();
await client.Send(command1);
var response = await client.ReceiveStringResponseAsync();
await client.Send(command2);
var response2 = await client.ReceiveStringResponseAsync();
response.Should().Be(response);
response2.Should().Be(response2);
Example code without wrapper for sending / receiving:
var hostName = IPAddress.Loopback.ToString();
const int port = 4000;
const string command1 = "ping";
const string mockResponse1 = "pong";
const string command2 = "pong";
const string mockResponse2 = "ping";
var tcpServer = new MockServer(new TcpServer(port));
tcpServer.Mock.Send(command1).Receive(mockResponse1);
tcpServer.Mock.Send(command2).Receive(mockResponse2);
tcpServer.Start();
var client = new TcpClient(hostName, port);
var stream = client.GetStream();
// SEND 1
var byteData = ASCII.GetBytes(command1);
await stream.WriteAsync(byteData, 0, byteData.Length);
var buffer = new byte[1024];
int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
var response1 = ASCII.GetString(buffer, 0, bytesRead);
// SEND 2
byteData = ASCII.GetBytes(command2);
await stream.WriteAsync(byteData, 0, byteData.Length);
bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
var response2 = ASCII.GetString(buffer, 0, bytesRead);
I'm having some trouble using this. It works very well for one request, but sending another command to the TCP server it throws an exception.
I did look at the followings tests:
https://github.com/MojtabaKiani/Rony.Net/blob/main/tests/Rony.FunctionalTests/MockTcpServerTests.cs
Should it be able to send the mock server multiple requests (like below) or is this not how it is intended to be used?
Example code:
Example code without wrapper for sending / receiving: