【问题标题】:Google mock on gRPC谷歌模拟 gRPC
【发布时间】:2021-06-23 05:31:18
【问题描述】:

我想测试客户端,从而通过 gmock 模拟服务器。 我的原型定义为

// The greeting service definition.
service Greeter {
  // Streaming request and reply
  rpc StreamRequestAndReply (stream Request) returns (stream Reply) {}
}


message Request {
  int32 idx = 1;
  bool is_pause = 2; // control message
}

message Reply {
  string msg = 1;
  bool is_eof = 2;
}

而服务器端的对应函数是这样的

Status StreamRequestAndReply(ServerContext *context, ServerReaderWriter<Reply, Request> *stream) override {
  // do something
}

我的问题是:如何通过 gmock 的模拟存根编写我预定义的回复消息,例如我想回复三个有效消息,然后在第四个中设置 is_eof?

我目前的想法是使用 testing::Invoke,但还没有弄清楚如何捕获流并调用 Write 函数。有人可以给我一些建议和提示吗?

【问题讨论】:

    标签: c++ grpc googletest gmock


    【解决方案1】:

    同步gRPC为所有接口提供虚函数,可以被StubInterface模拟。

    异步 ​​gRPC(即CompletionQueue)不提供这样的功能,因为它只是 C 实现的一个薄包装。在这种情况下,最好设置一个本地假服务器,并以类似集成的方式对其进行单元测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 2019-06-08
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多