Go 如何检查gRPC端点返回的值?

Go 如何检查gRPC端点返回的值?,go,protocol-buffers,Go,Protocol Buffers,我正在用Go编写一个实现grpcapi的应用程序 以下是描述我的端点响应消息的ProtoBuff规范: rpc MyEndpoint(RequestMessage) returns (ResponseMessage) { option (google.api.http) = { post: "/MyEndpoint" body: "*" }; } message ResponseMessage { message SubMes

我正在用Go编写一个实现grpcapi的应用程序

以下是描述我的端点响应消息的ProtoBuff规范:

rpc MyEndpoint(RequestMessage) returns (ResponseMessage) {
  option (google.api.http) = {
    post: "/MyEndpoint"
    body: "*"
  };
}

message ResponseMessage {
  message SubMessage {
    int32 a = 1;
    map<string, int32> b = 2;
  }
  string c = 1;
  map<string, SubMessage> d = 2;
}
当我运行此测试用例时,我得到以下输出:

responseFromEndpoint = map[c:string1 d:map[string2:map[a:1 b:map[string3:2]]]]
expectedResponse     = {{{} [] [] <nil>} 0 [] string1 map[string2:a:1  b:{key:"string3"  value:2}]}

我如何修改我的测试用例,以确保端点使用我期望的数据进行响应?

看起来端点的响应是一个映射,而不是一个映射struct@BurakSerdar好啊如何检查它的值??无论您调用什么
MyEndpoint
,都不会返回基于您包含的proto文件()的预期值。尝试删除生成的文件并重新运行
protoc
。或者发布一个帖子,这样我们就可以看到你在做什么。还要注意的是,进行直接比较是行不通的(除非您的
assert.Equal
具有特殊处理-请参阅)。
responseFromEndpoint = map[c:string1 d:map[string2:map[a:1 b:map[string3:2]]]]
expectedResponse     = {{{} [] [] <nil>} 0 [] string1 map[string2:a:1  b:{key:"string3"  value:2}]}
MyTestClass/MyTestCase: my_test_file.go:230:
        Error Trace:    my_test_file.go:230
        Error:          Not equal:
                        expected: ResponseMessage(ResponseMessage{state:impl.MessageState{NoUnkeyedLiterals:pragma.NoUnkeyedLiterals{}, DoNotCompare:pragma.DoNotCompare{}, DoNotCopy:pragma.DoNotCopy{}, atomicMessageInfo:(*impl.MessageInfo)(nil)}, sizeCache:0, unknownFields:[]uint8(nil), Name:"string1", SubMessages:map[string]*ResponseMessage_SubMessage{"string2":(*ResponseMessage_SubMessage)(0xc000098180)}})
                        actual  : map[string]interface {}(map[string]interface {}{"c":"string1", "d":map[string]interface {}{"string2":map[string]interface {}{"a":1, "b":map[string]interface {}{"string3":2}}}})