2014-08-28 1 views
3

J'ai une classe avec plusieurs méthodes qui dépendent les unes des autres. Disons foo(), bar() et baz().définir EXPECT_CALL pour rediriger l'appel à la méthode d'origine

Lorsque je teste bar() j'ai besoin de se moquer du comportement de foo(), quand je teste baz() j'ai besoin de se moquer du comportement de bar().

Si je me moque de la barre pour baz je ne peux pas utiliser la même classe fictive pour tester la barre avec le foo moqué().

Ma question est puis-je définir EXPECT_CALL pour appeler le comportement original et comment. Cela éliminera le besoin de créer plusieurs classes Mock.

Répondre

4

réponse se trouve dans googlemock CookBook

En bref, vous devez écrire

class MockFoo : public Foo { 
public: 
    // Mocking a pure method. 
    MOCK_METHOD1(Pure, void(int n)); 
    // Mocking a concrete method. Foo::Concrete() is shadowed. 
    MOCK_METHOD1(Concrete, int(const char* str)); 

    // Use this to call Concrete() defined in Foo. 
    int FooConcrete(const char* str) { return Foo::Concrete(str); } 
}; 

et

ON_CALL(foo, Concrete(_)) 
    .WillByDefault(Invoke(&foo, &MockFoo::FooConcrete)); 
Questions connexes