测试 gRPC 购物车服务

测试 gRPC 服务的方法有两种:单元测试和集成测试。单元测试是对服务的单个方法进行测试,而集成测试是对整个服务进行测试。使用工具生成测试代码,使用 AI 人工智能生成测试代码。

单元测试 gRPC 服务

dotnet add package moq
public class GreeterServiceTests
{
    [Fact]
    public async Task SayHello_ReturnsHello()
    {
        // Arrange
        var mockLogger = new Mock<ILogger<GreeterService>>();
        var service = new GreeterService(mockLogger.Object);
        var request = new HelloRequest { Name = "Unit Test" };
        var context = new ServerCallContext();

        // Act
        var reply = await service.SayHello(request, context);

        // Assert
        Assert.Equal("Hello Unit Test", reply.Message);
    }
}

集成测试 gRPC 服务

dotnet add package Microsoft.AspNetCore.TestHost
public class GreeterServiceIntegrationTests
{
    private readonly TestServer _server;
    private readonly Greeter.GreeterClient _client;

    public GreeterServiceIntegrationTests()
    {
        _server = new TestServer(new WebHostBuilder()
            .ConfigureServices(services =>
            {
                services.AddGrpc();
            })
            .Configure(app =>
            {
                app.UseRouting();
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapGrpcService<GreeterService>();
                });
            }));
        _client = new Greeter.GreeterClient(_server.CreateGrpcChannel());
    }

    [Fact]
    public async Task SayHello_ReturnsHello()
    {
        // Arrange
        var request = new HelloRequest { Name = "Integration Test" };

        // Act
        var reply = await _client.SayHelloAsync(request);

        // Assert
        Assert.Equal("Hello Integration Test", reply.Message);
    }
}