0

コード内の関数をテストするために、gmock、gtest フレームワークを使用しています。そして、テストされているメイン関数の側で呼び出される関数をモックしました。モック関数は無限 while ループにあり、成功した場合にのみ終了し、失敗した場合は keep がエラー メッセージを出力します。モック関数は次のようになります。

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

ここで、ソケット関数を失敗させてエラーを出力したいと考えています。私はエラーを印刷することができましたが、それは内部ループであるため、エラーメッセージを印刷し続けます。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 に答える