Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Hippomock中Expect调用函数参数中的模板函数_C++_Hippomocks - Fatal编程技术网

C++ Hippomock中Expect调用函数参数中的模板函数

C++ Hippomock中Expect调用函数参数中的模板函数,c++,hippomocks,C++,Hippomocks,我想隔离writeMemory,但由于以下错误,无法隔离: ../../Util/UnitTest++/../../UnitTests/KeeperDive_Test.h:66:57:错误:预期表达式mocks.ExpectCall(Skillmock,Skill::writeMemory).With(模板(Skillmock)) 课堂技能 { 受保护的: 模板无效写入内存(常量字符*键,T值) { PY\u错误\u尝试 { skillMemory[键]=(T)值; } PY\u错误\u捕获 }

我想隔离
writeMemory
,但由于以下错误,无法隔离:

../../Util/UnitTest++/../../UnitTests/KeeperDive_Test.h:66:57:错误:预期表达式mocks.ExpectCall(Skillmock,Skill::writeMemory).With(模板(Skillmock))

课堂技能
{
受保护的:
模板无效写入内存(常量字符*键,T值)
{
PY\u错误\u尝试
{
skillMemory[键]=(T)值;
}
PY\u错误\u捕获
}
};
测试(运行)
{    
嘲弄;
Skill*Skillmock=mocks.Mock();
ExpectCall(Skillmock,Skill::writeMemory).With(template(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));
}