-
[C#] gRPC Unit TestC#/기초 2024. 7. 4. 16:26
Server
https://learn.microsoft.com/en-us/aspnet/core/grpc/test-services?view=aspnetcore-8.0
Test gRPC services in ASP.NET Core
Learn how to test gRPC services in ASP.NET Core apps.
learn.microsoft.com
Client
https://learn.microsoft.com/en-us/aspnet/core/grpc/test-client?view=aspnetcore-8.0
Mock gRPC client in tests
Learn how to mock gRPC client in .NET tests.
learn.microsoft.com
[C#] C# gRPC 단위테스트 하기
참고 참고 사이트 목적 C# 으로 gRPC Server 를 구현합니다. 원래는 Client 가 Server 에게 메시지를 전송해서 서로 통신을 해야 하지만, Client 를 C# 에서 단위테스트를 통해서 구현하여 C# 에서 gRPC 단위
afsdzvcx123.tistory.com
gRPC 클라이언트 UnitTest할 때
조건에 맞는 호출이 있을때 지정한 반환 값으로 교체.
인터셉터
gRPC 클라이언트 인터셉터는 나가는 RPC 호출을 가로챌 수 있습니다. 전송된 요청, 들어오는 응답 및 클라이언트 쪽 호출의 컨텍스트에 대한 액세스를 제공합니다.
클라이언트에 대해 재정의할 Interceptor 메서드:
- BlockingUnaryCall: 단항 RPC의 차단 호출을 가로챕니다.
- AsyncUnaryCall: 단항 RPC의 비동기 호출을 가로챕니다.
- AsyncClientStreamingCall: 클라이언트 스트리밍 RPC의 비동기 호출을 가로챕니다.
- AsyncServerStreamingCall: 서버 스트리밍 RPC의 비동기 호출을 가로챕니다.
- AsyncDuplexStreamingCall: 양방향 스트리밍 RPC의 비동기 호출을 가로챕니다.
[TestMethod] [TestCategory("Device.Create"), TestCategory("Device.Fail")] public void Device_Create_Fail1() { // Arrange // 반환할 Call var mockCall = CallHelpers.CreateAsyncUnaryCall(new DeviceReply() { Message = "Failed to create Device" }); var mock = new Mock<Tag.TagClient>(); // DeviceRequest.Device.Name == null or Empty이면 mockCall 반환. mock .Setup(m => m.CreateDeviceAsync(It.Is<DeviceRequest>(x => string.IsNullOrEmpty(x.Device.Name)), null, null, CancellationToken.None)) .Returns(mockCall); var mockClient = new TagClient(mock.Object); // Act var data = new DeviceData() { DeviceGuid = "3FC6034C-D802-4451-A476-12353313E123", Name = "", Status = 1, Type = 1 }; var reply = mockClient.CreateDeviceAsync(data, "").Result; Console.WriteLine(reply); // Assert Assert.AreEqual(reply, "Failed to create Device"); }
https://learn.microsoft.com/ko-kr/aspnet/core/grpc/interceptors?view=aspnetcore-8.0
.NET의 gRPC 인터셉터
.NET에서 gRPC 인터셉터를 사용하는 방법을 알아봅니다.
learn.microsoft.com
728x90'C# > 기초' 카테고리의 다른 글
[C#] DllImport (0) 2024.07.23 [C#] nuget.Config (0) 2024.07.19 [C#] Delay, sleep, wait (0) 2024.06.14 [C#] 콘솔 창 없이 실행 (0) 2024.06.12 [C#] if ( Operator ) (0) 2024.06.12 댓글