2017-10-13 5 views

Répondre

1

Vous pouvez accomplir cela en utilisant la technique déléguant à réel, comme par Google Mock documentation:

Vous pouvez utiliser la technique à réelle déléguant pour vous assurer que votre maquette a le même comportement que le réel objet tout en conservant la possibilité de valider les appels. Voici un exemple:

using ::testing::_; 
using ::testing::AtLeast; 
using ::testing::Invoke; 

class MockFoo : public Foo { 
public: 
    MockFoo() { 
    // By default, all calls are delegated to the real object. 
    ON_CALL(*this, DoThis()) 
     .WillByDefault(Invoke(&real_, &Foo::DoThis)); 
    ON_CALL(*this, DoThat(_)) 
     .WillByDefault(Invoke(&real_, &Foo::DoThat)); 
    ... 
    } 
    MOCK_METHOD0(DoThis, ...); 
    MOCK_METHOD1(DoThat, ...); 
    ... 
private: 
    Foo real_; 
}; 
... 

    MockFoo mock; 

    EXPECT_CALL(mock, DoThis()) 
     .Times(3); 
    EXPECT_CALL(mock, DoThat("Hi")) 
     .Times(AtLeast(1)); 
    ... use mock in test ...