Ein einfacher TCP/UDP-Mock-Server zur Verwendung in Testprojekten, die .Net Core-basierte Projekte testen.
Als ich am Cimon.Net-Projekt arbeitete, wurde mir klar, dass ich Sockets nicht mit vorhandenen Bibliotheken simulieren kann. Deshalb habe ich mein Projekt geändert, um gefälschte Sockets zu erstellen. Aber das Problem bestand immer noch, also begann ich, dieses Projekt zu schreiben und verwendete es schließlich in Cimon.Net.
Sie können Rony.Net
mit der NuGet Package Manager-Konsole installieren:
Install-Package Rony.Net -Version 0.1.2
Oder über die .NET Core-Befehlszeilenschnittstelle:
dotnet add package Rony.Net --version 0.1.2
Mit Rony.Net können Sie drei Arten von Servern erstellen:
Sie können wie folgt Scheinserver erstellen und ausführen. Port, IP und andere Einstellungen können über Konstruktoren konfiguriert werden:
using var tcpServer = new MockServer ( new TcpServer ( 3000 ) ) ;
tcpSever . Start ( ) ;
using var tcpSslServer = new MockServer ( new TcpServerSsl ( 4000 , certificateName , SslProtocols . None ) ) ;
tcpSslServer . Start ( ) ;
Sie müssen ein gültiges und installiertes certificate
ansprechen, für dessen privaten Schlüssel Sie Leseberechtigung haben, und Sie können SslProtocol
auch entsprechend Ihren Anforderungen festlegen.
using var udpServer = new MockServer ( new UdpServer ( 5000 ) ) ;
Bitte beachten Sie, dass der UDP-Server aufgrund seiner Beschaffenheit nicht gestartet werden muss.
Dann können Sie einen normalen Client verwenden, um eine Verbindung herzustellen und eine Anfrage an ihn zu senden, wie unten beschrieben:
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 ) ;
Sie können mockServer.Mock
verwenden, um Sende-/Empfangsdaten zu verwalten. Anschließend gibt der Server konfigurierte Daten basierend auf den gesendeten Daten zurück:
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 ( ) ) ;
Eine wichtige Option bei der Verwendung von mockServer.Mock
ist das Hinzufügen Any
Anfrage. Anschließend wird auf jede nicht konfigurierte Anfrage basierend auf dieser Konfiguration (Version 0.1.1 und höher) geantwortet. Sie können den Server für diese Option konfigurieren, indem Sie in Send()
eine leere Zeichenfolge verwenden Send()
-Methode, genau wie unten:
mockServer . Mock . Send ( "" ) . Receive ( "Test Response" ) ;
Sie können mockServer.Mock
entweder vor oder nach mockServer.Run()
verwenden. Weitere Informationen finden Sie unter Testprojekte.
Sie benötigen mindestens Visual Studio 2019 (Sie können die Community Edition kostenlos herunterladen).
Alle Tests verwenden Xunit. Um einen TCP-Server mit SSL/TLS auszuführen, sollten Sie das Feld _certificateName
in einen Zertifikatnamen auf Ihrem Computer ändern. Bitte beachten Sie, dass Sie über eine Leseberechtigung für den privaten Schlüssel des Zertifikats verfügen müssen.