gpt4 book ai didi

c++ - GoogleTest 如何将 InvokeArgument 与 WithArg 一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:59 26 4
gpt4 key购买 nike

我有一个模拟函数:

MOCK_METHOD4(my_func, int(double, double, void* (*cb) (int), int p1));

我想以第三个参数作为参数调用上述函数的第二个(基于 0 的)参数,即以“p1”作为参数调用“cb”函数。我该怎么做?

我可以使用 InvokeArgument 使用一些自定义值调用“cb”:

ON_CALL(mockObj, my_func(_, _, _, _)).
WillByDefault(DoAll(
IgnoreResult(InvokeArgument<2>(10)),
Return(0)));

但我想用传递给同一个模拟函数调用的实际参数来调用它。

最佳答案

您可以定义一个ACTION 来调用您的回调。如下所示:

ACTION(CallCb) {
arg2(arg3);
}

...

ON_CALL(*mockObj, my_func(_, _, _, _))
.WillByDefault(
DoAll(CallCb(),
Return(0)));

关于c++ - GoogleTest 如何将 InvokeArgument 与 WithArg 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38239642/

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