gpt4 book ai didi

c++ - 如何比较谷歌模拟中的特殊领域?

转载 作者:行者123 更新时间:2023-11-30 05:48:25 25 4
gpt4 key购买 nike

我有关于谷歌测试的问题。我想问问是否在诱导“EXPECT_CALL(*A, some_method(mes1));”在测试用例中,可以比较包含的字段在 mes1 类中。

struct Mes
{
int a;
};

//short section of test case:
Mes mes1 = Mes();
EXPECT_CALL(*A, some_method(mes1));

我想问一下在google mock中是否可以比较Mes中包含的特殊字段。像这样的东西:

EXPECT_CALL(*A, some_method(mes1), compare(Mes.a));//in this case google mock would compare only field "a" from Mes.

最佳答案

这取决于你想用比较的结果做什么。如果你只是想查询字段的值,你可以简单地定义一个函数来处理它:

// Note: The signature of someFunction needs to match some_method.
void someFunction(const Mes& mes)
{
// Do something with mes.a
}

然后按如下方式设置您的期望:

EXPECT_CALL(*A, some_method(mes1)).WillOnce(Invoke(someFunction));

请注意,如果 some_method 返回一个值,您可能还必须提供 Return行动。

或者,如果您希望在字段不是某个特定值时测试失败,则需要编写自定义匹配器:

MATCHER_P(MesFieldEq, val, "")
{
return (arg.a == val);
}

然后按照您的期望使用它,如下所示:

// Fails unless mes.a is equal to 42.
EXPECT_CALL(*A, some_method(MesFieldEq(42));

关于c++ - 如何比较谷歌模拟中的特殊领域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28193990/

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