我想隔离writeMemory
,但由于以下错误,我无法理解:
../../ Util / UnitTest ++ / .. / .. / UnitTests / KeeperDive_Test.h:66:57:错误:预期表达式mocks.ExpectCall(Skillmock,Skill :: writeMemory).With(模板(Skillmock) ));
class Skill
{
protected:
template <class T> void writeMemory(const char *key, T value)
{
PY_ERROR_TRY
{
skillMemory[key] = (T)value;
}
PY_ERROR_CATCH
}
};
TEST(run)
{
MockRepository mocks;
Skill *Skillmock = mocks.Mock<Skill>();
mocks.ExpectCall(Skillmock, Skill::writeMemory).With(template<class T>(Skillmock));
}
答案 0 :(得分:0)
您不能期望对模板方法进行调用 - 仅限于该方法的特定实例。对于这种情况,你也无法模拟非虚拟类成员,部分原因是因为它没有实现,但主要是因为这个实例无论如何都会完全内联,并且之后不能被模拟掉。