У меня есть две чисто виртуальные функции:
virtual bool IsTypeAllowed(
const std::string& policy,
eType type) const = 0;
virtual bool IsSubTypeAllowed(
const std::string& policy,
const std::string& request) const = 0;
издевались в классе Mock, вот так:
MOCK_CONST_METHOD2(IsTypeAllowed,
bool(const std::string& policy,
eType type));
MOCK_CONST_METHOD2(IsSubTypeAllowed,
bool(const std::string& policy,
const std::string& request));
С ожидаемыми вызовами:
EXPECT_CALL(mock_policy_handler_,
IsTypeAllowed(kPolicy, request_type))
.WillOnce(Return(true));
EXPECT_CALL(mock_policy_handler_,
IsSubTypeAllowed(kPolicy, request_subtype))
.WillOnce(Return(false));
Там kPolicy
is std::string
request_type
is eType
request_subtype
is std::string
Затем возникает вызов IsTypeAllowed:
policy_handler.IsTypeAllowed(kPolicy,request_type)
это идет вразрез с IsSubTypeAllowed.
Я слышал, что GMock может «запутать» функции, если у него одно и то же имя и общая подпись, что на самом деле не мой случай из-за разных имен функций.
Это распространенная ошибка, и есть ли решение?