В предыдущей версии Google Mock вы могли только имитировать виртуальные функции, см. Документацию на странице проекта.
Более поздние версии позволили имитировать не виртуальные методы , используя то, что они называют внедрение зависимости hi-perf .
As congusbongus
заявляет:
Google Mock полагается на добавление переменных-членов в метод поддержкинасмешка, и так как вы не можете создавать переменные-члены шаблона, невозможно смоделировать функции шаблона
Обходной путь, Майкл Харрингтон в ссылке на googlegroups из комментариев, состоит в том, чтобы сделать специализированные методы шаблона, которыебудет вызывать нормальную функцию, которая может быть посмешищем.Это не решает общий случай, но это будет работать для тестирования.
struct Foo
{
MOCK_METHOD1(GetValueString, void(std::string& value));
template <typename ValueType>
void GetValue(ValueType& value);
template <>
void GetValue(std::string& value) {
GetValueString(value);
}
};