издеваться над глобальной функцией, вызываемой в функции-члене класса?

У меня есть глобальная функция int32_t QryUserLevel(std::map<int32_t, UserLevelInfo>& , const std::vector<int32_t>, std::string& ); это мой определенный класс, class GroupManager { public: uint32_t batchGetNBInfo(const std::set<uint32_t>& users, std::map<uint32_t, uint32_t>& nbs); }; в batchGetNBInfofunction будет вызывать глобальную функцию QryUserLevel, например: uint32_t batchGetNBInfo(const std::set<uint32_t>& users, std::map<uint32_t, uint32_t>& nbs) { ... QryUserLevel(std::map<int32_t, UserLevelInfo>& , const std::vector<int32_t>, std::string& ); ... } теперь я хочу использовать google mock для имитации функции QryUserLevel, что мне делать, не меняя класс GroupManager? я читал макетные документы Google, но он не дает образца. большое спасибо!


person pc Xie    schedule 09.06.2017    source источник
comment
Вы не можете имитировать глобальную функцию в C++ без некоторых хаков на уровне компоновщика или на уровне предварительной загрузки библиотеки. Google Mock сам по себе недостаточен. Кроме того, вы можете немного изменить свой код.   -  person yeputons    schedule 09.06.2017
comment
я не хочу менять функцию batchGetNBInfo   -  person pc Xie    schedule 09.06.2017
comment
Затем вы можете изменить QryUserLevel, чтобы он вел себя как оболочка для чего-то, что можно высмеивать с помощью Google Mock.   -  person yeputons    schedule 09.06.2017
comment
Вы можете показать мне, как это сделать?   -  person pc Xie    schedule 09.06.2017
comment
@pcXie Подробно описано в дубликате   -  person πάντα ῥεῖ    schedule 09.06.2017
comment
@πάνταῥεῖ не могли бы вы дать мне ответ?   -  person pc Xie    schedule 09.06.2017
comment
@πάνταῥεῖ мой вопрос отличается от моего описания   -  person pc Xie    schedule 09.06.2017