Un simple serveur fictif TCP/UDP à utiliser dans des projets de test qui testent des projets basés sur le noyau .Net.
Lorsque je travaillais sur le projet Cimon.Net, j'ai réalisé que je ne pouvais pas me moquer des sockets avec les bibliothèques existantes. J'ai donc modifié mon projet pour créer de fausses sockets. Mais le problème existait toujours, j'ai donc commencé à écrire ce projet et finalement je l'ai utilisé dans Cimon.Net.
Vous pouvez installer Rony.Net
avec la console NuGet Package Manager :
Install-Package Rony.Net -Version 0.1.2
Ou via l'interface de ligne de commande .NET Core :
dotnet add package Rony.Net --version 0.1.2
Avec Rony.Net vous pouvez créer 3 types de Serveur :
Vous pouvez créer et exécuter des serveurs fictifs comme ci-dessous. Le port, l'IP et d'autres paramètres sont configurables via les constructeurs :
using var tcpServer = new MockServer ( new TcpServer ( 3000 ) ) ;
tcpSever . Start ( ) ;
using var tcpSslServer = new MockServer ( new TcpServerSsl ( 4000 , certificateName , SslProtocols . None ) ) ;
tcpSslServer . Start ( ) ;
Vous devez adresser un certificate
valide et installé pour lequel vous disposez d'une autorisation de lecture sur sa clé privée, et vous pouvez également définir SslProtocol
en fonction de vos besoins.
using var udpServer = new MockServer ( new UdpServer ( 5000 ) ) ;
Veuillez faire attention au fait que le serveur UDP n'a pas besoin de démarrer, en raison de sa nature.
Ensuite, vous pouvez utiliser un client normal pour vous connecter et leur envoyer une demande, comme ci-dessous :
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 ) ;
Vous pouvez utiliser mockServer.Mock
pour gérer les données d'envoi/réception, puis le serveur renverra les données configurées, en fonction des données envoyées :
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 ( ) ) ;
Une option importante dans l'utilisation de mockServer.Mock
consiste à y ajouter Any
request, puis il répondra à toute base de requête non configurée sur cette configuration (version 0.1.1 et ultérieure), vous pouvez configurer le serveur pour cette option en utilisant une chaîne vide dans Send()
, comme ci-dessous :
mockServer . Mock . Send ( "" ) . Receive ( "Test Response" ) ;
Vous pouvez utiliser mockServer.Mock
avant ou après mockServer.Run()
. Pour plus de détails, veuillez consulter Projets de test.
Vous avez besoin d'au moins Visual Studio 2019 (vous pouvez télécharger l'édition communautaire gratuitement).
Tous les tests utilisent Xunit, pour exécuter le serveur TCP avec SSL/TLS, vous devez remplacer le champ _certificateName
par un nom de certificat sur votre machine. Veuillez faire attention au fait que vous devez avoir l'autorisation de lecture sur la clé privée du certificat.