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).

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top