2017-09-22 8 views
0
#include "gtest/gtest.h" 
#include "gmock/gmock.h" 

class Turtle{ 
    public: 
     int foo(); 
}; 

int func(){ 
    Turtle local_tutrtle; 
    auto x = local_tutle.foo(); 

    ...... 

    return x; 
} 

TEST(mock, foo) { 
    class MockTurtle : public Turtle { 
     public: 
      MOCK_METHOD0(foo, int()); 
    }; 

    ASSERT_EQ(10, func()); 
} 

Comment puis-je simuler le fichier local_turtle dans func()? Je veux changer la valeur de retour de local_tutle.foo() sans modifier func();googlemock: simuler un objet local

Merci.

+0

passe 'local_turtle' comme argument. Ou passez une espèce de Turtle Factory. –

Répondre

1

Vous ne pouvez pas.

Vous avez à compléter l'objet moqué (dans votre tortue exemple) de l'extérieur, en passant (ou moqué nomral) objet tortue comme argument.

Ce modèle de conception est appelée l'injection de dépendance, et vous devriez vous familiariser avec elle le plus tôt possible, car il est très important dans la conception d'applications facilement testables et fréquemment utilisés.

+0

Merci. Je vais étudier le motif. – yamasv