gpt4 book ai didi

c++ - 模拟非虚方法 C++ (gmock)

转载 作者:IT老高 更新时间:2023-10-28 23:14:54 26 4
gpt4 key购买 nike

我有课

class CSumWnd : public CBaseWnd
{

private:
bool MethodA()
}

请你帮助如何模拟 MethodA() 而不使虚拟,没看懂hi-perf dependency injection的概念

最佳答案

这意味着您必须将生产代码模板化。使用您的示例:

CSumWind 类定义:

class CSumWnd : public CBaseWnd
{

private:
bool MethodA()
};

模拟CSumWnd类定义:

class MockCSumWnd : public CBaseWnd
{

private:
MOCK_METHOD(MethodA, bool());
};

必须使用模拟类 CSumWind 测试的生产类。现在它被模板化以提供在生产代码中使用 CSumWind 类和在测试中使用 MockCSumWnd 类。

template <class CSumWndClass>
class TestedClass {
//...
void useSumWnd(const CSumWndClass &a);

private:
CSumWndClass sumWnd;
};

TestedClass 在生产环境中的实例化:

TestedClass <CSumWnd> obj;

在测试可执行文件中实例化 TestedClass 对象:

TestedClass <MockCSumWnd> testObj;

关于c++ - 模拟非虚方法 C++ (gmock),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5777733/

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