.Net 코어 기반 프로젝트를 테스트하는 테스트 프로젝트에 사용하기 위한 간단한 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.Run()
전후에 mockServer.Mock
사용할 수 있습니다. 자세한 내용은 테스트 프로젝트를 확인하세요.
최소한 Visual Studio 2019가 필요합니다(Community Edition을 무료로 다운로드할 수 있음).
모든 테스트는 Xunit을 사용합니다. SSL/TLS로 TCP 서버를 실행하려면 _certificateName
필드를 컴퓨터의 인증서 이름으로 변경해야 합니다. 인증서의 개인키에 대한 읽기 권한이 있어야 하므로 주의하시기 바랍니다.