creo que la pieza faltante del rompecabezas es que usted no tiene que establecer una expectativa en un método y en su lugar sólo se puede establecer un valor de retorno por defecto.
Mocks
Toda la discusión y ejemplos en el "Google Mock for Dummies" se centra en el establecimiento de expectativas. Todo habla sobre el uso de un código similar al siguiente:
EXPECT_CALL(turtle, PenDown())
.Times(AtLeast(1));
¿Qué es lo que quiere para burlarse, pero para stubbing usted no tiene ninguna expectativa. Después de leer esa introducción, no tenía ni idea de cómo usar googlemock para copiar.
Talones
comentario de ratkok me llevaron a encontrar la manera de establecer un valor de retorno por defecto. Así es como para especificar un valor de retorno para un objeto burlado, pero ninguna expectativa:
ON_CALL(foo, Sign(_))
.WillByDefault(Return(-1));
http://code.google.com/p/googlemock/wiki/CookBook#Setting_the_Default_Actions_for_a_Mock_Method
Parece googlemock emitirá un aviso si se llama a un método que no tiene EXPECT_CALL. Aparentemente puede evitar esta advertencia utilizando su construcción NiceMock o simplemente puede ignorarla. Además, parece que puede evitar la advertencia mediante el uso de un esperar (que no estoy seguro si es una buena idea para los talones). Desde el Google Mock FAQ:
EXPECT_CALL(foo, Bar(_))
.WillRepeatedly(...);
Creo que es exactamente lo que estaba tratando de averiguar.
actualización
puedo confirmar esto funciona. Escribí una prueba unitaria usando la prueba de google junto con googlemock y pude anular un método para una clase usando ON_CALL.
No estoy seguro, pero he oído que boost tiene una biblioteca de pruebas unitaria. Desafortunadamente, tengo que admitir que nunca he escrito código para pruebas unitarias. – AJG85
¿No hay algún tipo de secuencia de comandos python de generador que pueda generar algunas clases simuladas? – Nim
@aloneguid: ¿En serio? No lo creo Las personas reales de C++ usan cualquier prueba que sea apropiada para su aplicación. –