En utilisant GMock pour vérifier un appel Destructeur
-
12-10-2019 - |
Question
Utilisation GMock, comment puis-je vérifier que l'on appelle la destructor d'une classe? Est-il un moyen, autre que l'envelopper dans un autre de classe?
La méthode évidente, EXPECT_CALL(object, ~classtype())
donne une erreur du compilateur (gmock ne peut pas produire une méthode appelée maquette gmock_~classtype
).
La solution
Un moyen facile de vérifier un appel destructor:
class MockFoo : public Foo {
...
// Add the following two lines to the mock class.
MOCK_METHOD0(Die, void());
virtual ~MockFoo() { Die(); }
};
Dans votre fonction de test:
MockFoo* foo = new MockFoo;
...
{
EXPECT_CALL(*foo, Die());
}
Plus de détails peuvent être trouvés ici: Mocking Destructeurs
Autres conseils
Sauf si vous passez --gmock_catch_leaked_mocks=0
, alors gmock devrait déjà détecter lorsque vous ne parvenez pas à détruire une maquette. Le destructor est l'endroit où les attentes non satisfaites sont signalées comme des erreurs, donc gmock a un soutien particulier pour détecter quand il est pas appelé.