خادم وهمي بسيط لـ TCP/UDP للاستخدام في مشاريع الاختبار التي تختبر المشاريع المستندة إلى .Net الأساسية.
عندما كنت أعمل في مشروع Cimon.Net، أدركت أنني لا أستطيع محاكاة المقابس باستخدام المكتبات الموجودة، لذلك قمت بتغيير مشروعي لإنشاء مقابس وهمية. لكن المشكلة لا تزال موجودة، لذلك بدأت في كتابة هذا المشروع وأخيراً استخدمته في Cimon.Net.
يمكنك تثبيت Rony.Net
باستخدام وحدة تحكم NuGet Package Manager:
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 على الأقل (يمكنك تنزيل الإصدار المجتمعي مجانًا).
تستخدم جميع الاختبارات Xunit، لتشغيل خادم TCP مع SSL/TLS، يجب عليك تغيير حقل _certificateName
إلى اسم شهادة على جهازك. يرجى الانتباه إلى أنه يجب أن يكون لديك إذن القراءة على المفتاح الخاص للشهادة.