Library to mocking gRPC client. Instead of Grpc.Core.Testing using extensions for Moq
Based on libraries:
Install-Package Net.Testing.Moq.Grpc
There is naming policy aka
.Setup(...).Returns(...), but it cannot use with Delegates (only for values computed outside)
// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup and set return
grpcMock
.Setup(c => c.Simple(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync(new TestResponse());
var client = grpcMock.Object;
// Call
var response = client.Simple(new TestRequest());// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new TestResponse();
// Setup and set return
grpcMock
.Setup(c => c.SimpleAsync(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync(testResponse);
var client = grpcMock.Object;
// Call
var response = await client.SimpleAsync(new TestRequest());// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup and set return by lambda
grpcMock
.Setup(c => c.SimpleAsync(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync(() => new TestResponse());
var client = grpcMock.Object;
// Call
var response = client.SimpleAsync(new TestRequest());// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup and set return by lambda with request param
grpcMock
.Setup(c => c.SimpleAsync(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync<TestService.TestServiceClient, TestRequest, TestResponse>(r => new TestResponse{ Val = r.Val });
var client = grpcMock.Object;
// Call
var response = client.SimpleAsync(new TestRequest());// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup
grpcMock
.SetupSequence(c => c.SimpleAsync(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync(firstExpectedResponse)
.ReturnsAsync(secondExpectedResponse);
var client = grpcMock.Object;
// Call
var firstResponse = await client.SimpleAsync(new TestRequest());
var secondResponse = await client.SimpleAsync(new TestRequest());// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new TestResponse();
// Setup and set response
grpcMock
.Setup(c => c.SimpleClientStream(null, null, default))
.ReturnsAsync(testResponse);
var client = grpcMock.Object;
// Call
var stream = client.SimpleClientStream();
await stream.RequestStream.WriteAllAsync(new[] {new TestRequest()}, true);
var response = await stream;// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new TestResponse();
// Setup and set response by lambda
grpcMock
.Setup(c => c.SimpleClientStream(null, null, default))
.ReturnsAsync(() => testResponse);
var client = grpcMock.Object;
// Call
var stream = client.SimpleClientStream();
await stream.RequestStream.WriteAllAsync(new[] {new TestRequest()}, true);
var response = await stream;// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup and set response by lambda and requests like param
grpcMock
.Setup(c => c.SimpleClientStream(null, null, default))
.ReturnsAsync(rs => new TestResponse{ Val = rs.Sum(r => r.Val) });
var client = grpcMock.Object;
// Call
var stream = client.SimpleClientStream();
await stream.RequestStream.WriteAllAsync(new[] {new TestRequest()}, true);
var response = await stream;// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup
grpcMock
.SetupSequence(c => c.SimpleClientStream(null, null, default))
.ReturnsAsync(firstExpectedResponses)
.ReturnsAsync(secondExpectedResponses);
var client = grpcMock.Object;
// Call
var firstCall = client.SimpleClientStream();
await firstCall.RequestStream.CompleteAsync();
var firstMessage = await firstCall;
var secondCall = client.SimpleClientStream();
await secondCall.RequestStream.CompleteAsync();
var secondMessage = await secondCall;// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new[]{ new TestResponse() };
// Setup and set responses like argument (params TResponse[] responses)
grpcMock
.Setup(c => c.SimpleServerStream(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync(testResponse);
var client = grpcMock.Object;
// Call
var stream = client.SimpleServerStream(new TestRequest());
var responses = stream.ResponseStream.ReadAllAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new[]{ new TestResponse() };
// Setup and set responses by lambda (factory)
grpcMock
.Setup(c => c.SimpleServerStream(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync(() => testResponse);
var client = grpcMock.Object;
// Call
var stream = client.SimpleServerStream(new TestRequest());
var responses = stream.ResponseStream.ReadAllAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup and set responses by lambda and request like argument
grpcMock
.Setup(c => c.SimpleServerStream(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync<TestService.TestServiceClient, TestRequest, TestResponse>(r => new[]{ new TestResponse{ Val = r.Val } });
var client = grpcMock.Object;
// Call
var stream = client.SimpleServerStream(new TestRequest());
var responses = stream.ResponseStream.ReadAllAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup
grpcMock
.SetupSequence(c => c.SimpleServerStream(It.IsAny<TestRequest>(), null, null, default))
.ReturnsAsync(firstExpectedResponses)
.ReturnsAsync(secondExpectedResponses);
var client = grpcMock.Object;
// Call
var firstMessages = await client.SimpleServerStream(new TestRequest()).ResponseStream.ReadAllAsync().ToArrayAsync();
var secondMessages = await client.SimpleServerStream(new TestRequest()).ResponseStream.ReadAllAsync().ToArrayAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new[]{ new TestResponse() };
// Setup and set responses like argument (params TResponse[] responses)
grpcMock
.Setup(c => c.SimpleClientServerStream(null, null, default))
.ReturnsAsync(testResponse);
var client = grpcMock.Object;
// Call
var stream = client.SimpleClientServerStream();
await stream.RequestStream.WriteAsync(new TestRequest(), true);
var responses = stream.ResponseStream.ReadAllAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new[]{ new TestResponse() };
// Setup and set responses by lambda
grpcMock
.Setup(c => c.SimpleClientServerStream(null, null, default))
.ReturnsAsync(() => testResponse);
var client = grpcMock.Object;
// Call
var stream = client.SimpleClientServerStream();
await stream.RequestStream.WriteAsync(new TestRequest(), true);
var responses = stream.ResponseStream.ReadAllAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new[]{ new TestResponse() };
// Setup and set responses by lambda and requests like args
grpcMock
.Setup(c => c.SimpleClientServerStream(null, null, default))
.ReturnsAsync(rs => rs.Select(r => new TestResponse{ Val = r.Val }));
var client = grpcMock.Object;
// Call
var stream = client.SimpleClientServerStream();
await stream.RequestStream.WriteAsync(new TestRequest(), true);
var responses = stream.ResponseStream.ReadAllAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
var testResponse = new[]{ new TestResponse() };
// Setup and set responses by lambda and requests like args
grpcMock
.Setup(c => c.SimpleClientServerStream(null, null, default))
.ReturnsAsync(r => new TestResponse{ Val = r.Val });
var client = grpcMock.Object;
// Call
var stream = client.SimpleClientServerStream();
await stream.RequestStream.WriteAsync(new TestRequest(), true);
var responses = stream.ResponseStream.ReadAllAsync();// Creation moq
var grpcMock = new Mock<TestService.TestServiceClient>();
// Setup
grpcMock
.SetupSequence(c => c.SimpleClientServerStream(null, null, default))
.ReturnsAsync(firstExpectedResponses)
.ReturnsAsync(secondExpectedResponses);
var client = grpcMock.Object;
// Call
var firstCall = client.SimpleClientServerStream();
await firstCall.RequestStream.CompleteAsync();
var firstMessages = await firstCall.ResponseStream
.ReadAllAsync()
.ToArrayAsync();
var secondCall = client.SimpleClientServerStream();
await secondCall.RequestStream.CompleteAsync();
var secondMessages = await secondCall.ResponseStream
.ReadAllAsync()
.ToArrayAsync();