SUT вызывает внешнюю библиотеку, для которой определен EXPECT_CALL.Я хочу сделать что-то только тогда, когда функция вызывается в первый раз, и игнорировать выполнение чего-либо в другой раз (но убедитесь, что она вызывается дважды);и наоборот .. т.е. ничего не делать в первый раз, когда он вызывается, и что-то во второй раз, когда он вызывается.
// Code for the Expect Call
EXPECT_CALL(*mock_ptr, some-function(_,_)) .Times(2) .WillOnce(action1)
.WillOnce(do-nothing);
// SUT call
ASSERT_NO_THROW(sut_function(arg1, arg2));
Игнорируя второй (бездействующий) WillOnce, я получаю предупреждение Gmock, например:
ПРЕДУПРЕЖДЕНИЕ GMOCK: test_blah-blah.cpp: 321: слишком мало действий, указанных в EXPECT_CALL (* mock_ptr, some-function (, )) ... Ожидается, что будет вызвандважды, но имеет только 1 WillOnce ().ПРЕДУПРЕЖДЕНИЕ GMOCK: test_blah-blah.cpp: 321: Действия завершены в EXPECT_CALL (* mock_ptr, some-function (, )) ... Вызывается 2 раза, но указывается только 1 WillOnce () - возвратнапрямую.
Какое действие я должен выполнить в части «ничего не делать», чтобы не получить это предупреждение?some-function - это функция, возвращающая пустоту.
Спасибо!