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,你能把我们保存在这里并确认是否有办法将工会与字段
匹配吗?