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);
};
VisualStudio2008とgmock1.6.0を使用しています。私がしているのは何が悪いのか。realClass.AnotherFunctionでmock.SomeFunction()からのモック出力が必要です。