[C#] gRPC Unit Test
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