2011-12-27 20 views
20

Quiero probar el fallo en caso de que falle algún método en un objeto simulado, utilizando google mock. lo que el código sea algo como:google mock: cómo puedo "ESPERAR" que no se invocará ningún método en un simulacro

auto mocObj = new MockObj; 
EXPECT_NO_METHOD_CALL(mocObj); //this is what I'm locking for 

auto mainObj = new MainObj(mocObj , ......and other mocks); // here I simulate a fail using the other mock objects, and I want to be sure the no methods are called on the mockObj 
+0

Pregunta: ¿por qué está renovando sus objetos? No es necesario ... –

Respuesta

14

Crear una StrictMock; cualquier llamada a un método inesperado será un error.

30

No hay necesidad de indicar explícitamente que no se llamarán los métodos. Si configura el nivel de registro lo suficientemente alto, debe recibir un mensaje si se llama a un método (si no se establece una expectativa).

Aparte de eso, puede establecer las expectativas de la siguiente manera:

EXPECT_CALL(mockObj, Foo(_)).Times(0); 

sobre todos los métodos.

+1

Esto es lo que necesito en mi prueba. Pero tenga en cuenta, el nombre correcto es 'Times', comenzando con capital. – demi

+0

Ref: https://github.com/google/googletest/blob/master/googlemock/docs/FrequentlyAskedQuestions.md#how-can-i-assert-that-a-function-is-never-called –

1

Use Exactamente (0) para todos sus métodos de clase.

la cardinalidad se establecerá en cero, por lo que no espera ninguna llamada

Cuestiones relacionadas