2

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

../../Util/UnitTest++/../../UnitTests/KeeperDive_Test.h:66:57: 错误:预期表达式 mocks.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));
}
4

1 回答 1

0

您不能期望调用模板方法 - 只能调用该方法的特定实例。在这种情况下,您也无法模拟非虚拟类成员,部分原因是它没有实现,但主要是因为这个实例无论如何都会被完全内联,并且以后不能被模拟出来。

于 2015-03-26T09:53:45.920 回答