Я думаю, что недостающий фрагмент головоломки состоит в том, что вам не нужно устанавливать ожидание для метода, а вместо этого вы можете просто установить возвращаемое значение по умолчанию.
Mocks
Все обсуждения и примеры в " Google Mock for Dummies " посвящены установлению ожиданий. Все говорит об использовании некоторого кода, подобного следующему:
EXPECT_CALL(turtle, PenDown())
.Times(AtLeast(1));
Это то, что вы хотите, чтобы насмехаться, но для заглушки у вас нет никаких ожиданий. Прочитав это вступление, я понятия не имел, как использовать googlemock для создания заглушек.
Заглушки
Комментарий ratkok помог мне узнать, как установить значение по умолчанию. Вот как указать возвращаемое значение для смоделированного объекта, но без ожидания:
ON_CALL(foo, Sign(_))
.WillByDefault(Return(-1));
http://code.google.com/p/googlemock/wiki/CookBook#Setting_the_Default_Actions_for_a_Mock_Method
Похоже, googlemock выдаст предупреждение, если вы вызовете метод, для которого нет EXPECT_CALL. По-видимому, вы можете предотвратить это предупреждение, используя их NiceMock конструкцию или вы можете просто проигнорировать его. Кроме того, кажется, что вы можете избежать предупреждения, используя вместо этого ожидание (что я не уверен, если это хорошая идея для заглушек). Из Google Mock FAQ :
EXPECT_CALL(foo, Bar(_))
.WillRepeatedly(...);
Я верю, что это именно то, что я пытался выяснить.
Обновление
Я могу подтвердить, что это работает. Я написал модульный тест, используя google test, вместе с googlemock и смог отключить метод для класса с помощью ON_CALL.