GMock EXPECT_CALL仅在指定的参数上调用

时间:2018-02-08 08:22:24

标签: timeout call googletest gmock

我正在尝试为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”然后退出循环。

我怎么能得到预期的效果?

0 个答案:

没有答案