gpt4 book ai didi

c++ - 在googlemock中匹配自定义类型的参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:40 27 4
gpt4 key购买 nike

我在使用 google mock 将函数参数与特定对象匹配时遇到问题。

考虑以下代码:

class Foo
{
public:
struct Bar
{
int foobar;
}

void myMethod(const Bar& bar);
}

现在我有一些测试代码,它可能看起来像这样:

Foo::Bar bar;
EXPECT_CALL(fooMock, myMethod(Eq(bar));

所以我想确保在调用 Foo::myMethod 时,参数看起来像我在本地实例化的 bar 对象。

当我尝试这种方法时,我收到如下错误消息:

gmock/gmock-matchers.h(738): error C2678: binary '==' : no operator found which takes a left-hand operand of type 'const Foo::Bar' (or there is no acceptable conversion)

我尝试使用 Eq(ByRef(bar)) 定义运算符 == 和 !=(至少 == 都是自由函数的成员),但我无法解决问题。唯一有帮助的是使用

Field(&Foo::Bar::foobar, x) 

但这样我就必须检查我的结构中的每个字段,这似乎需要大量的打字工作......

最佳答案

好吧,那我自己回答:

你必须为 Foo::Bar 提供一个 operator== 实现:

bool operator==(const Foo::Bar& first, const Foo::Bar& second)
{
...
}

不要将它作为成员函数添加到 Foo::Bar 中,而是使用一个自由函数。

并且,吸取教训,注意不要将它们放入匿名命名空间。

关于c++ - 在googlemock中匹配自定义类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17232713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com