0

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

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

现在我想让套接字函数失败并打印错误。我设法打印了错误,但由于它在他的 while 循环中,它一直在打印错误消息。我如何期望 gtest 在 1 或 2 次后停止打印。我把期望这样

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

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

4

1 回答 1

0

如果要退出循环,则需要socket返回值 >= 0 :while

int error(-1), success(0);
EXPECT_CALL(object, socket(_,_,_))
    .WillOnce(Return(error))
    .WillOnce(Return(error))
    .WillOnce(Return(success));
于 2012-12-14T22:18:59.607 回答