как установить expect_call для функции в цикле while?

Я использую gmock, gtest framework для проверки функции в моем коде. И я издевался над функцией, которая вызывается внутри тестируемой основной функции. Мок-функция находится в бесконечном цикле while и завершается только в случае успеха, а в случае сбоя функция keep выводит сообщение об ошибке. Издевательская функция выглядит так:

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

теперь я хочу, чтобы функция сокета не работала и печатала ошибку. Мне удалось распечатать ошибку, но, поскольку это цикл while, он продолжает печатать сообщение об ошибке. Как мне поставить ожидание, чтобы gtest перестал печатать после 1 или 2 раз. Я положил ожидание, как это

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

Я пытался поставить .Times(2), но это не сработало.


person user419205    schedule 14.12.2012    source источник


Ответы (1)


Вам нужно, чтобы socket возвращало значение >= 0, если вы хотите, чтобы цикл while завершился:

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