Простой макетный сервер TCP/UDP для использования в тестовых проектах, которые тестируют проекты на основе ядра .Net.
Когда я работал над проектом Cimon.Net, я понял, что не могу имитировать сокеты с помощью существующих библиотек, поэтому я изменил свой проект, чтобы создавать поддельные сокеты. Но проблема все еще существовала. Поэтому я начал писать этот проект и, наконец, использовал его в Cimon.Net.
Вы можете установить Rony.Net
с помощью консоли диспетчера пакетов NuGet:
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()
, как показано ниже:
mockServer . Mock . Send ( "" ) . Receive ( "Test Response" ) ;
Вы можете использовать mockServer.Mock
до или после mockServer.Run()
. Для получения более подробной информации, пожалуйста, проверьте Тестовые проекты.
Вам потребуется как минимум Visual Studio 2019 (вы можете скачать Community Edition бесплатно).
Во всех тестах используется Xunit. Для запуска TCP-сервера с SSL/TLS вам следует изменить поле _certificateName
на имя сертификата на вашем компьютере. Обратите внимание, что у вас должно быть разрешение на чтение закрытого ключа сертификата.