2011-01-19 12 views

risposta

16

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 Destructors

3

meno che non sei passando --gmock_catch_leaked_mocks=0, quindi gmock dovrebbe già essere in grado di rilevare quando non si riesce a distruggere un mock. Il distruttore è dove le aspettative insoddisfatte sono contrassegnate come errori, quindi gmock ha un supporto speciale per rilevare quando non viene chiamato.

+0

Tuttavia, c'è un avvertimento: GMock * non * rileverà le prese in giro che non hanno aspettative ad esse collegate (ON_CALL/EXPECT_CALL). Questo perché il controllo delle perdite si basa sulle informazioni archiviate nell'entità speciale denominata registro GTest e in esso non sono registrati mock senza aspettative. – r5ha

Problemi correlati