模拟函数与签名中的类模板参数

Gra*_*eme 9 c++ testing mocking gmock

是否可以使用gmock来模拟一个包含类模板参数的函数?例如:

template <typename T>
struct Mockable
{
    virtual void do_work(const int num, const T& value) = 0;
};

template <typename T>
struct MockMockable : Mockable<T>
{
    MOCK_METHOD2(do_work, void(const int, const T&));
};
Run Code Online (Sandbox Code Playgroud)

Gra*_*eme 18

我找到了答案,你需要将模拟方法特别表示为模板模拟方法 _T

template <typename T>
struct MockMockable : Mockable<T>
{
    MOCK_METHOD2_T(do_work, void(const int, const T&));
};
Run Code Online (Sandbox Code Playgroud)

更多信息:https: //github.com/google/googletest/blob/master/googlemock/docs/CheatSheet.md#mocking-a-class-template

(不确定是删除还是离开?)