grpcmock provides a mock gRPC server from a generated gRPC client code.
This package currently supports unary RPCs only.
func TestClient(t *testing.T) {
ts := grpcmock.NewServer(t)
conn := ts.ClientConn()
client := hello.NewGrpcTestServiceClient(conn)
// Register a mock response.
helloRPC := grpcmock.Register(ts, "/hello.GrpcTestService/Hello", hello.GrpcTestServiceClient.Hello).
Response(&hello.HelloResponse{
Message: "Hello, world!",
})
ts.Start()
ctx := context.Background()
res, _ := client.Hello(ctx, &hello.HelloRequest{Name: "qawatake"})
if res.Message != "Hello, world!" {
t.Errorf("unexpected response: %s", res.Message)
}
{
// Retrieve the request(s)
got := helloRPC.Requests()[0].Body
if got.Name != "qawatake" {
t.Errorf("unexpected request: %v", got)
}
}
}
- k1LoW/grpcstub: provides a stub gRPC server from protobuf files (not from generated gRPC client code)