第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

grpc 測試代碼退出 1 并出現(xiàn)“rpc 錯誤:代碼 = 未實(shí)現(xiàn)的 desc

grpc 測試代碼退出 1 并出現(xiàn)“rpc 錯誤:代碼 = 未實(shí)現(xiàn)的 desc

Go
元芳怎么了 2022-10-17 19:20:26
環(huán)境go version go1.17.4 linux/amd64libprotoc 3.6.1問題我正在測試 Go 實(shí)現(xiàn)的 grpc 服務(wù)器和客戶端。首先,我做了 proto 定義并通過 protoc 命令生成 pb 代碼。我提到了這個解決方案。下面的錯誤由最小代碼打印以重現(xiàn)我的錯誤。錯誤$ go test--- FAIL: TestHello (0.00s)    main_test.go:49: failed to Hello: rpc error: code = Unimplemented desc = method Hello not implementedFAILexit status 1FAIL    github.com/Asuha-a/test/test    0.003s代碼你好.protosyntax = "proto3";option go_package = "github.com/Asuha-a/test/pb";package hello;service Hello {  rpc Hello (HelloRequest) returns (HelloReply) {}}message HelloRequest {  string foo = 1;}message HelloReply {  string bar = 1;}main_test.gopackage hello_testimport (    "context"    "log"    "net"    "testing"    "github.com/Asuha-a/test/pb"    "google.golang.org/grpc"    "google.golang.org/grpc/test/bufconn")type server struct {    pb.UnimplementedHelloServer}const bufSize = 1024 * 1024var lis *bufconn.Listenerfunc init() {    lis = bufconn.Listen(bufSize)    s := grpc.NewServer()    pb.RegisterHelloServer(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 TestHello(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.NewHelloClient(conn)    r, err := client.Hello(ctx, &pb.HelloRequest{        Foo: "foo",    })    if err != nil {        t.Fatalf("failed to Hello: %v", err) //49th line prints the error    }    log.Println(r)}
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個贊

在您的測試中,您pb.RegisterHelloServer(s, &server{})使用 serverstruct 進(jìn)行調(diào)用。然而,這個結(jié)構(gòu)只嵌入pb.UnimplementedHelloServer和聲明沒有方法。因此,您只能codes.Unimplemented在調(diào)用其任何 RPC 時返回。


您必須在結(jié)構(gòu)上實(shí)現(xiàn)Hellorpc server:


func (s *server) Hello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloReply, error) {

    return &pb.HelloReply{}, nil

}

注意:嵌入pb.UnimplementedHelloServer使 gRPC 服務(wù)器實(shí)現(xiàn)向前兼容,但代價是編譯時檢查。要放棄前向兼容性并在編譯時捕獲這些錯誤,您可以改為嵌入pb.UnsafeHelloServer.


查看完整回答
反對 回復(fù) 2022-10-17
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號