I found the answer, you need to denote the mock methods specifically as template mock methods with a _T
template <typename T>
struct MockMockable : Mockable<T>
{
MOCK_METHOD2_T(do_work, void(const int, const T&));
};
More information: https://github.com/google/googletest/blob/master/docs/gmock_cheat_sheet.md#mocking-a-class-template-mocktemplate