Test d'un service gRPC
Le test des services gRPC dans Go nécessite une approche globale qui garantit à la fois la fonctionnalité et les performances. Une méthode de test de ces services implique l'utilisation du package google.golang.org/grpc/test/bufconn pour simuler le comportement du réseau au sein d'une connexion en mémoire.
Le package bufconn vous permet de supprimer le besoin de un véritable numéro de port tout en facilitant les tests RPC en streaming. Pour mettre en œuvre cette approche, vous pouvez utiliser l'extrait de code suivant :
import "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. }
Cette approche exploite à la fois le comportement du réseau et les connexions en mémoire pour garantir des tests appropriés, permettant un processus de test plus réaliste et plus complet.
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!