Frage

Mit GMock, wie kann ich überprüfen, ob eine Destruktor der Klasse aufgerufen wird? Gibt es eine Möglichkeit, andere als zu wickeln sie es in einer anderen Klasse ?

Die offensichtliche Methode, EXPECT_CALL(object, ~classtype()) ergibt einen Compiler-Fehler (gmock kann nicht eine Mock-Methode genannt gmock_~classtype produzieren).

War es hilfreich?

Lösung

Eine einfache Möglichkeit für einen Destruktoraufrufs zu überprüfen:

class MockFoo : public Foo {
  ...
  // Add the following two lines to the mock class.
  MOCK_METHOD0(Die, void());
  virtual ~MockFoo() { Die(); }
};

In Ihrer Testfunktion:

 MockFoo* foo = new MockFoo;
  ...
  {
    EXPECT_CALL(*foo, Die());
  }

Weitere Informationen finden Sie hier: Mocking Destructors

Andere Tipps

Wenn Sie --gmock_catch_leaked_mocks=0 vorbei sind, dann sollten gmock bereits Erkennung, wenn Sie nicht ein Modell zu zerstören. Der destructor ist, wo unbefriedigt Erwartungen als Fehler gekennzeichnet sind, so gmock spezielle Unterstützung hat zum Erfassen, wenn es nicht aufgerufen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top