Hippomocks期望与类实例调用

时间:2015-02-08 16:01:47

标签: hippomocks

如何使用类实例或结构实例设置expect调用作为“with”部分中的参数之一?该文档似乎没有显示如何做到这一点。我看到使用简单的参数,如字符串和整数 - 但不是类实例。您通常只将该参数设置为“_”并完成吗?

2 个答案:

答案 0 :(得分:0)

对于可比较的实例,您可以传递一个实例并使用它。

对于无法比较的实例,将无法确定参数是否与您放入的内容相匹配。因此无法编译。您需要以某种方式使它们具有可比性,以允许Hippomocks确定您的呼叫是否匹配。

答案 1 :(得分:0)

Dascandy已经解释过了。

解决方案是,提供您自己的比较器实现,例如,对于上面的例子:

inline bool operator==(const MyStruct& lhs, const MyStruct& rhs)
{
    if ((lhs.a == rhs.a) && (lhs.b == rhs.b))
    {
        return true;
    }
    return false;
}

这使得编译器关闭并且测试按预期工作:

TEST(check_CanCompareStructArguments)
{
    MockRepository mocks;

    IStruct* is = mocks.Mock<IStruct>();
    MyStruct ms;
    ms.a = 5;
    ms.b = 7;

    mocks.ExpectCall(is, IStruct::A).With(ms);

    is->A(ms);
}