У меня есть 2 класса.
class SomeClass
{
public:
int SomeFunction()
{
return 5;
}
};
class AnotherClass
{
public:
int AnotherFunction(SomeClass obj)
{
return obj.SomeFunction();
}
};
Я создал фиктивный класс для SomeClass.
class MockSomeClass : public SomeClass
{
public:
MOCK_METHOD0(SomeFunction, int());
};
Теперь я хочу в модульном тесте, что когда я вызываю AnotherClass.AnotherFunction, я получаю результат по своему выбору. AnotherFunction использует функцию SomeClass.SomeFunction (). Я издевался над SomeClass. И я установил, что когда функция вызываемого объекта вызывает его, он возвращается 10. Но когда я запускаю модульное тестирование, он возвращает 5 (оригинальная функция). Что я должен делать. Ниже приведен модульный тест, который я написал.
[TestMethod]
void TestMethod1()
{
MockSomeClass mock;
int expected = 10;
ON_CALL(mock, SomeFunction()).WillByDefault(Return(expected));
AnotherClass realClass;
int actual = realClass.AnotherFunction(mock);
Assert::AreEqual(expected, actual);
};
Я использую Visual Studio 2008 и Gmock 1.6.0. Что не так я делаю. на realClass.AnotherFunction я хочу смоделированный вывод из mock.SomeFunction ().