2015-05-11 62 views
0

我試圖模擬硬件抽象層功能,這是uint32_t hw_epoch()通過編寫一個假的,並從一個假的調用模擬方法,這將讓我驗證hw_epoch()函數開始調用。因此,考慮下面的代碼簡化:訪問Google測試夾具成員

#include <stdint.h> 
#include "gmock/gmock.h" 

using ::testing::Return; 

class FooInterface { 
public: 
    virtual ~FooInterface() {} 
    virtual uint32_t m_hw_epoch() = 0; 
}; 

class MockFoo : public FooInterface { 
public: 
    MOCK_METHOD0(m_hw_epoch, uint32_t()); 
private: 
}; 

// ----- Test Fixture: 
class FooTest : public ::testing::Test { 
public: 
    FooTest() : FooInterfacePtr(&MockFooObj) {} 
    ~FooTest() {} 

    MockFoo MockFooObj; 
    FooInterface* FooInterfacePtr; 
}; 

// ----- Fakes 
uint32_t hw_epoch() { 
    FooInterfacePtr->m_hw_epoch(); // *** How Can I access FooInterfacePtr? 
    return 5; 
} 

TEST_F(FooTest, constructor) { 
} 

的FooTest燈具有成員FooInterfacePtr,我怎麼能免費功能uint32_t hw_epoch()訪問此成員嗎?

謝謝你......

+1

你不能用一個免費功能來做到這一點。可能是[自定義'ACTION'](https://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Actions_Quickly)將更適合解決您的問題。 –

+0

這是一個無賴,試圖避免通過接口調用免費功能。似乎你應該能夠調用成員函數,另一方面,不受建造順序控制的順序手可能是限制因素。感謝您的答覆... – user1135541

回答

0

每@πάνταῥεῖ,它不可能用一個免費的功能做到這一點。自定義操作是一種可能的解決方案。