.Net core ベースのプロジェクトをテストするテスト プロジェクトで使用するためのシンプルな TCP/UDP モック サーバー。
Cimon.Net プロジェクトに取り組んでいたとき、既存のライブラリではソケットをモックできないことに気づき、偽のソケットを作成するようにプロジェクトを変更しました。しかし、問題はまだ存在していたので、このプロジェクトを書き始め、最終的にこれを Cimon.Net で使用しました。
NuGet パッケージ マネージャー コンソールを使用して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.Mock
、 mockServer.Run()
の前後どちらでも使用できます。詳細については、「テスト プロジェクト」を参照してください。
少なくとも Visual Studio 2019 が必要です (Community Edition は無料でダウンロードできます)。
すべてのテストは Xunit を使用します。SSL/TLS で TCP サーバーを実行するには、 _certificateName
フィールドをマシン上の証明書名に変更する必要があります。証明書の秘密鍵の読み取り権限が必要なので注意してください。