Из того, что я понимаю gmock (и я новичок в нем) EXPECT_CALL
позволяет указать, как будет вести себя метод при его вызове (в этом случае меня больше всего интересует то, вернуть). Но я мог бы точно определить метод явно с его телом. Пример:Определение поведения метода через EXPECT_CALL vs в теле
class Factory
{
int createSomething();
};
class MockFactory : public Factory
{
MOCK_METHOD0(createSomething, int());
};
int main()
{
...
int something(5);
MockFactory mockFactory;
EXPECT_CALL(mockFactory, createSomething()).WillRepeatedly(Return(something));
...
}
против
class MockFactory : public Factory
{
int createSomething()
{
return 5;
}
};
Теперь, если createSomething
были вести себя по-разному (возвращать разные вещи) в различных сценариях, то очевидно, что я должен использовать EXPECT_CALL
. Но если он всегда будет возвращать то же самое, не лучше ли просто явно определить тело метода? (Обратите внимание, что другие методы в издеваемом классе могут по-прежнему использовать EXPECT_CALL
.)