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

标签 c++ hippomocks

我想隔离 writeMemory 但我不能,因为出现以下错误:

../../Util/UnitTest++/../../UnitTests/KeeperDive_Test.h:66:57: error: expected expression 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));
}

最佳答案

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

关于c++ - Hippomock 中 Expect 调用函数参数中的模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28293338/

相关文章:

c++ - HippoMocks - 模拟一个返回 unique_ptr 的函数

c++ - OpenCV:运算符 "+"错误;添加

c++ - 在 std::Map 中处理 std::List for operator==,operator!= 等

c++ - 使用 internetcheckconnection 在 C++ 中检查互联网连接

c++ - 替代模板参数的转换构造函数

c++ - 在 ‘)’ token G++ 之前预期为 ‘;’

c++ - HippoMocks 通过 ref 模拟返回值

c++ - Hippo Mocks 中具有不同返回值的多个预期调用是否可以重复使用模拟?