[英]c# unit tests using sockets
我正在試圖找出如何為服務器應用程序編寫單元測試,該服務器應用程序需要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#中實現這一點,所以我可以創建沒有套接字的Streams? 如何寫入流並再次讀取它以查看消息是否正確?
[nkvu - 根據海報的問題反對我的評論,將其從評論中移出並回答答案; 不想偷竊@ Andrey的雷聲]
所以在Java中你正在做:
InputStream socketInputStream = new ByteArrayInputStream("string".getBytes());
在您的單元測試中(我假設,基於您的原始問題)。
在C#中你可以這樣做:
Stream socketInputStream = new MemoryStream(Encoding.UTF8.GetBytes("string"));
那將是(注意到我有一段時間沒有真正的Java)C#-ish等價物。 因為MemoryStream只是Stream的子類,所以您可以使用常規的Stream方法從中讀取數據(例如Read())。
你也可以寫一個MemoryStream,例如:
bytes[] toWrite = Encoding.UTF8.GetBytes("Write to stream");
Stream writeToStream = new MemoryStream();
writeToStream.Write(toWrite, 0, toWrite.Length);
HTH,Nathan
您可以在C#中使用MemoryStream 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.