gpt4 book ai didi

c++ - 单元测试函数对象是否被调用

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

模拟用于检测函数调用。如果我们有一个带有函数对象的类,可以做什么:

#include <functional>
#include <iostream>

using namespace std;

class A {
public:
A(){};
void doit(){
//...
if(f)
f();
//...
}
function<void()> f;
};

int main(){
A a;
a.f = [] () { cout << "hello\n"; };
a.doit();
}

有没有办法测试 f 是否在函数 doit() 中被调用?

最佳答案

几天前我就需要这个。我最终做的是这样的:

class TestHelper
{
public:
MOCK_METHOD0(foo, void());
};

而且,当我实例化我的对象时,我传递模拟函数或使用该函数的 lambda 更准确(您也可以使用 std::bind)。

注意:您还需要声明您要测试该函数调用。为此,您有 EXPECT_CALL

在您的示例中,它看起来像这样:

TEST(My_test)
{
A a;
TestUtil helper;
EXPECT_CALL(helper, foo()).Times(1); // Or whatever other matcher and action you want to test.
a.f = [] () { helper.foo(); };
a.doit();
}

Note that you will need google-mock for doing this.

关于c++ - 单元测试函数对象是否被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39849925/

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