C++ 如何使用GMock的Field()宏来匹配结构/联合的嵌套成员?

C++ 如何使用GMock的Field()宏来匹配结构/联合的嵌套成员?,c++,unit-testing,mocking,match,googlemock,C++,Unit Testing,Mocking,Match,Googlemock,我有一个具有嵌套并集的结构,现在我需要模拟一些将消息结构作为参数的方法,并且我希望将参数与该结构的并集的嵌套成员中的指定值相匹配 struct Message_t { enum MsgType_e { Empty = 0, Quote, Timer, Reqst, Reply, TYPE_COUNT }; enum TdReply_e { Time_Out = 0, Stat_Chg, Settlmnt, Instrmnt, Commissn, REPLY_COUNT }; Msg

我有一个具有嵌套并集的结构,现在我需要模拟一些将消息结构作为参数的方法,并且我希望将参数与该结构的并集的嵌套成员中的指定值相匹配

struct Message_t {
  enum MsgType_e { Empty = 0, Quote, Timer, Reqst, Reply, TYPE_COUNT };
  enum TdReply_e { Time_Out = 0, Stat_Chg, Settlmnt, Instrmnt, Commissn, REPLY_COUNT };

  MsgType_e   type;
  Period_e    period;
  union {
    struct {
      Contract_t* pContract;
      int         buff_used;
    } asQuoteMsg;

    struct {
      SysTimeNS_t now_time;
      AS2C_t      sec2clos;
    } asTimerMsg;

    struct {
      TdSession_t*   pTdSes;
      TdReply_e      reply;
      int            req_id;
    } asReplyMsg;
  };
};
使用GMock,我希望执行以下操作:

  EXPECT_CALL( someMock, notify( Field( &Message_t::asReplyMsg::reply, Message_t::Settlmnt ) ) ).Times( 1 );
但它不能被编译


我该怎么办?或者我不能这样做?

不确定是否可以使用字段匹配器匹配联合。您可以尝试定义自己的MATCHER\u P,但这需要更多样板代码。感谢您的帮助!我一直在这么做。@PiotrNycz,你能把我们保存在这里并确认是否无法将联合与
字段
匹配吗?不确定是否可以使用字段匹配器来匹配联合。您可以尝试定义自己的MATCHER\u P,但这需要更多样板代码。感谢您的帮助!我一直在这么做。@PiotrNycz,你能把我们保存在这里并确认是否有办法将工会与
字段
匹配吗?