Usando GMock para verificar un destructor de llamadas
-
12-10-2019 - |
Pregunta
El uso de GMock, ¿cómo puedo comprobar que el destructor de una clase se llama? ¿Hay una manera, que no sea a envolverlo en otra clase ?
El método obvio, EXPECT_CALL(object, ~classtype())
produce un error de compilación (gmock no puede producir un método mock llamado gmock_~classtype
).
Solución
An easy way to check for a destructor call:
class MockFoo : public Foo {
...
// Add the following two lines to the mock class.
MOCK_METHOD0(Die, void());
virtual ~MockFoo() { Die(); }
};
In your test function:
MockFoo* foo = new MockFoo;
...
{
EXPECT_CALL(*foo, Die());
}
More Details can be found here: Mocking Destructors
Otros consejos
Unless you're passing --gmock_catch_leaked_mocks=0
, then gmock should already be detecting when you fail to destroy a mock. The destructor is where unsatisfied expectations are flagged as errors, so gmock has special support for detecting when it is not called.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow