Introduction
gRPC, un framework largement utilisé pour créer des appels de procédure à distance (RPC) , fournit un mécanisme robuste pour la communication interservices. Pour garantir la fiabilité et l'exactitude des services gRPC, les tests jouent un rôle crucial. Cet article explore le test d'un service gRPC écrit en Go à l'aide d'une connexion en mémoire.
Utilisation du package Bufconn
Pour éviter les complexités liées à l'utilisation de ports réseau réels lors des tests gRPC, le package google.golang.org/grpc/test/bufconn est recommandé. Ce package permet la création d'un écouteur en mémoire qui émule le comportement du réseau sans impliquer le système d'exploitation.
Exemple de code
Considérez un service gRPC avec la définition de proto suivante et implémentation du serveur :
syntax = "proto3"; package helloworld; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; }
// SayHello implements GreeterServer func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { return &pb.HelloReply{Message: "Hello " + in.Name}, nil }
Test Implémentation
Pour tester la fonction SayHello, une fonction de test peut être créée à l'aide de bufconn :
func TestSayHello(t *testing.T) { ctx := context.Background() 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) } }() defer s.GracefulStop() 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) // Perform additional tests on the response. }
Ce test initialise l'écouteur en mémoire, démarre un serveur gRPC et établit une connexion au serveur à l'aide du numéroteur de bufconn. Il appelle ensuite la fonction SayHello et affirme l'exactitude de la réponse.
Avantages de l'utilisation de Bufconn
L'utilisation de bufconn offre plusieurs avantages pour tester les services gRPC :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!