Menguji perkhidmatan gRPC yang ditulis dalam Go boleh dicapai menggunakan pakej google.golang.org/grpc/test/bufconn. Pakej ini memudahkan ujian penstriman RPC tanpa bergantung pada nombor port sebenar.
Contoh:
Untuk menguji pelayan Hello World yang disediakan:
package main import ( "context" "log" "testing" pb "helloworld" "github.com/golang/protobuf/ptypes/empty" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/grpc/test/bufconn" ) const bufSize = 1024 * 1024 var lis *bufconn.Listener func init() { lis = bufconn.Listen(bufSize) s := grpc.NewServer() pb.RegisterGreeterServer(s, &server{}) go func() { if err := s.Serve(lis); err != nil { log.Fatalf("Server exited with error: %v", err) } }() } func bufDialer(context.Context, string) (net.Conn, error) { return lis.Dial() } func TestSayHello(t *testing.T) { ctx := context.Background() conn, err := grpc.DialContext(ctx, "bufnet", grpc.WithContextDialer(bufDialer), grpc.WithInsecure()) if err != nil { t.Fatalf("Failed to dial bufnet: %v", err) } defer conn.Close() client := pb.NewGreeterClient(conn) resp, err := client.SayHello(ctx, &pb.HelloRequest{"Dr. Seuss"}) if err != nil { t.Fatalf("SayHello failed: %v", err) } log.Printf("Response: %+v", resp) // Test for output here. }
Faedah:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguji Perkhidmatan gRPC dengan Cekap dalam Pergi Tanpa Menggunakan Port Sebenar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!