一個簡單的 TCP/UDP 模擬伺服器,用於測試基於 .Net core 的專案的測試專案。
當我在 Cimon.Net 專案上工作時,我意識到我不能用現有的函式庫來模擬套接字,所以我改變了我的專案來建立假套接字。但問題仍然存在,所以我開始編寫這個項目,最後我在Cimon.Net中使用了這個項目。
您可以使用 NuGet Package Manager Console 安裝Rony.Net
:
Install-Package Rony.Net -Version 0.1.2
或透過 .NET Core 命令列介面:
dotnet add package Rony.Net --version 0.1.2
使用 Rony.Net 您可以建立 3 種類型的伺服器:
您可以如下建立並運行模擬伺服器。連接埠、IP 和其他設定可透過建構函數進行設定:
using var tcpServer = new MockServer ( new TcpServer ( 3000 ) ) ;
tcpSever . Start ( ) ;
using var tcpSslServer = new MockServer ( new TcpServerSsl ( 4000 , certificateName , SslProtocols . None ) ) ;
tcpSslServer . Start ( ) ;
您必須使用有效且已安裝的certificate
,並且您對其私鑰具有讀取權限,並且您還可以根據您的要求設定SslProtocol
。
using var udpServer = new MockServer ( new UdpServer ( 5000 ) ) ;
請注意,由於其性質,UDP 伺服器不需要啟動。
然後您可以使用普通客戶端連線並向它們發送請求,如下所示:
using var client = new TcpClient ( ) ;
await client . ConnectAsync ( IPAddress . Parse ( "127.0.0.1" ) , 3000 ) ;
var client = new UdpClient ( ) ;
client . Connect ( IPAddress . Parse ( "127.0.0.1" ) , 5000 ) ;
您可以使用mockServer.Mock
來管理發送/接收數據,然後伺服器將根據發送的數據傳回配置的數據:
mockServer . Mock . Send ( "Test String" ) . Receive ( "Test Response" ) ;
mockServer . Mock . Send ( new byte [ ] { 1 , 2 , 3 } ) . Receive ( new byte [ ] { 3 , 2 , 1 } ) ;
mockServer . Mock . Send ( "abcd" ) . Receive ( x => x . ToUpper ( ) ) ;
使用mockServer.Mock
的一個重要選項是新增Any
請求,然後它將基於此配置回復任何未配置的請求(版本0.1.1及更高版本),您可以透過在Send()
中使用空字串來配置此選項的伺服器Send()
方法,如下所示:
mockServer . Mock . Send ( "" ) . Receive ( "Test Response" ) ;
您可以在mockServer.Run()
之前或之後使用mockServer.Mock
。欲了解更多詳細信息,請查看測試項目。
您至少需要 Visual Studio 2019(您可以免費下載社群版)。
所有測試都使用 Xunit,為了使用 SSL/TLS 執行 TCP 伺服器,您應該將_certificateName
欄位變更為您電腦上的憑證名稱。請注意,您必須具有憑證私鑰的讀取權限。