我正在尝试为GMock中的EXPECT_CALL编写超时宏。 现在的代码如下所示:
#define EXPECT_CALL_WTIMEOUT(object, call, timeout)
{
volatile bool done = false;
int time = timeout;
EXPECT_CALL(object, call).Times(AtLeast(1)).WillOnce(
InvokeWithoutArgs([&]
{
done = true;
}));
while(time-- && !done){
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
testing::Mock::VerifyAndClearExpectations(&object);
}
我想要实现的是获取EXPECT_CALL的超时,这样如果没有使用该时段中给出的确切参数调用该方法,它将失败。 但是,我得到的是甚至在函数的其他参数上调用“InvokeWithoutArgs”部分。 例如,我正在尝试等待其中一个参数通过“IN_PROGRESS”然后“SUCCESS”的事件。我正在等待接收“SUCCESS”但期望失败,因为它首先收到“IN_PROGRESS”然后退出循环。
我怎么能得到预期的效果?