Utilizzando GMock per verificare un distruttore di chiamata
-
12-10-2019 - |
Domanda
Utilizzando GMock, come posso verificare che il distruttore di una classe si chiama? C'è un modo, diverso da quello di avvolgerlo in un'altra classe ?
Il metodo ovvio, EXPECT_CALL(object, ~classtype())
produce un errore di compilatore (gmock non può produrre un metodo chiamato finto gmock_~classtype
).
Soluzione
Un modo semplice per verificare la presenza di una chiamata distruttore:
class MockFoo : public Foo {
...
// Add the following two lines to the mock class.
MOCK_METHOD0(Die, void());
virtual ~MockFoo() { Die(); }
};
Nella funzione di test:
MockFoo* foo = new MockFoo;
...
{
EXPECT_CALL(*foo, Die());
}
Maggiori dettagli si possono trovare qui: Mocking distruttori
Altri suggerimenti
A meno che non si sta passando --gmock_catch_leaked_mocks=0
, quindi gmock dovrebbe essere già rilevare quando non si riesce a distruggere una finta. Il distruttore è dove le aspettative non soddisfatte sono contrassegnati come errori, in modo da gmock ha un supporto speciale che riconosce quando non viene chiamato.