如何在while循环中为函数设置expect_call?

时间:2012-12-14 15:01:11

标签: unit-testing googletest gmock

我正在使用gmock,gtest框架来测试我的代码中的函数。我模拟了正在测试的主要功能侧面调用的函数。模拟函数处于无限循环中,仅在成功的情况下退出,并在出现故障时保持打印错误消息。模拟函数看起来像这样,

while((fd = (socket(_,_,_)) < 0)
 {
   print("error")
 }
  return fd;

现在我想让socket函数失败并打印错误。我设法打印错误,但因为它是int in while while循环它不断打印错误消息。我如何设定期望,以便gtest在1或2次后停止打印。我把这样的期望放在了

 EXPECT_CALL(object, socket(_,_,_)).WillRepeatedly(return (error));

我尝试使用.Times(2),但它没有用。

1 个答案:

答案 0 :(得分:0)

如果您希望socket循环退出,则需要while返回值&gt; = 0:

int error(-1), success(0);
EXPECT_CALL(object, socket(_,_,_))
    .WillOnce(Return(error))
    .WillOnce(Return(error))
    .WillOnce(Return(success));