En la versión anterior de Google Mock, solo puede simular funciones virtuales; consulte el documentation en la página del proyecto.
Versiones más recientes permitidas para simular non-virtual methods, usando lo que ellos llaman inyección de dependencia de alto rendimiento.
Como congusbongus
estados:
Google Mock se basa en la adición de variables miembro para apoyar el método de burla, y puesto que no se puede crear variables miembro plantilla, que es imposible funciones de plantilla simulacros
Un Una solución, por Michael Harrington en el enlace de los grupos de google a partir de los comentarios, es hacer que los métodos de plantilla especializados que llaman a una función normal que se puede burlar. No resuelve el caso general, pero funcionará para las pruebas.
struct Foo
{
MOCK_METHOD1(GetValueString, void(std::string& value));
template <typename ValueType>
void GetValue(ValueType& value);
template <>
void GetValue(std::string& value) {
GetValueString(value);
}
};
Siento ser inútil, pero yo soy el único que, cuando ve a preguntas como esta, tiene el primer instinto de responder "Eres una plantilla estúpida! Y su madre vestida que divertido! Que podría utilizar una estúpida estúpida plantilla? " –
Gracias por su comentario Brian ... El código fuente que ve es parte de una clase más grande. Esta plantilla no es tan estúpida como parece ... –
http://www.merriam-webster.com/dictionary/mock: para tratar con desprecio o ridículo –