gpt4 book ai didi

c++ - 如何调用传递给 Mock 方法的函数指针?

转载 作者:太空狗 更新时间:2023-10-29 20:23:10 32 4
gpt4 key购买 nike

virtual void doSomething(std::function<void(std::error_code result)> callback) = 0

MockMethod1(doSomething, std::function<void(std::error_code result)> callback);

现在当我写EXPECT_CALL时,我怎么调用“回调”

EXPECT_CALL(object, doSomething(testing::_)).WillRepeatedly( ??? );

我应该写什么来调用我的回调?

最佳答案

使用自定义操作来实现这一点。为了获得更大的灵 active ,我建议为操作创建一个模板,其中模板参数表示 doSomething 中回调函数的参数索引。以下是您如何执行此操作:

ACTION_TEMPLATE(ExecuteCallback, HAS_1_TEMPLATE_PARAMS(unsigned, uIndex), AND_1_VALUE_PARAMS(callbackArg))
{
(std::get<uIndex>(args))(callbackArg);
}

请注意,如果需要,您可以添加更多值参数。现在,在您的测试中,您可以像这样调用设置模拟调用:

EXPECT_CALL(object, doSomething(testing::_)).WillRepeatedly(DoAll(ExecuteCallback<0>(err), Return()));

关于c++ - 如何调用传递给 Mock 方法的函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34347762/

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