【发布时间】:2013-03-20 21:04:57
【问题描述】:
我试图弄清楚如何为需要 C# 中的套接字的服务器应用程序编写单元测试。我需要从套接字读取以处理请求。在 Java 中,我可以通过使用 Streams 来避免使用套接字,因此在编写单元测试时,我可以轻松地将字符串转换为流。
// ====== Input ======
InputStream socketInputStream = new InputStream(socket.getInputStream());
// or using string instead like this
InputStream socketInputStream = new ByteArrayInputStream("string".getBytes());
BufferedReader in = new BufferedReader(new InputStreamReader(socketInputStream));
// ====== Output ======
OutputStream socketOutputStream = new OutputStream(socket.getOutputStream());
// I need to write byte[] to the stream
BufferedOutputStream out = new BufferedOutputStream(socketOutputStream);
我只找到了 NetworkStream() 但它也需要一个套接字。
如何在 C# 中实现这一点,以便创建没有套接字的流? 以及如何写入 Stream 并再次读取它以查看消息是否正确?
【问题讨论】:
-
可能是MemoryStream,它由一个字节[] 支持。如果你想写一个字符串并且你可以“硬编码”一个编码,你可以使用Encoding.GetBytes之类的东西将字符串转换为字节[]
-
如果它由 byte[] 支持,我如何使用它从套接字读取?程序必须能够获取流,无论它是由字符串还是套接字创建的
标签: c# unit-testing sockets