2017-09-22 103 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()); 
} 

我該如何模擬func()中的local_turtle?我想在不修改func()的情況下改變local_tutle.foo()的返回值。googlemock:模擬本地對象

謝謝。

+0

通過'local_turtle'作爲參數。或者通過某種烏龜工廠。 –

回答

1

你不能。

你必須通過傳遞(嘲諷或非正式)烏龜對象作爲參數,從外部補充嘲笑的對象(在你的例子龜)。

這種設計模式被稱爲依賴注入,您應該儘快熟悉它,因爲它在設計易於測試的應用程序和經常使用時非常重要。

+0

謝謝。我會研究這種模式。 – yamasv