Go 如何检查gRPC端点返回的值?
我正在用Go编写一个实现grpcapi的应用程序 以下是描述我的端点响应消息的ProtoBuff规范: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
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}}}})