2015-05-05 6 views
0
class foo 
{ 
    // some functions which uses class member t 
    protected: 
    Test t; 
}; 

Class Test 
{ 
    // some functions 

} 

и я высмеивал тест класса и как назначить макет объекта классу foo? потому что я собираюсь проверить класс foo.Назначить макет объекта защищенному элементу

+0

Как защищенный член 'Test t' присваивается в реальном коде? –

ответ

1

Я правильно понял вас? Ваш продуктивный код находится в классе foo, и он использует функциональные возможности, предоставляемые классом. В вашем случае тест? Пожалуйста, используйте инъекции зависимостей, чтобы избежать таких проблем. Создайте интерфейс, из которого вытекает Тест. Например:

// Productive Code 
class TestInterface { 
    virtual void TestMethod() = 0; 
}; 
class ProductiveTest : public TestInterface { 
... 
} 
class foo 
{ 
    public: 
    foo(TestInterface const& t) : t_(t) {} 
    // some functions which uses class member t 
    protected: 
    TestInterface& t_; 
}; 

// Test Code 
class Test : public TestInterface { 
    MOCK_METHOD0(TestMethod, void()); 
} 

Таким образом, вы можете протестировать foo также в изоляции.

Смежные вопросы