Mock非虚方法C ++(gmock) [英] Mock non-virtual method C++ (gmock)

查看:2024
本文介绍了Mock非虚方法C ++(gmock)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有类

class CSumWnd : public CBaseWnd
{

 private:
 bool MethodA()
}

请帮助如何模拟MethodA ()无需虚拟化,
我不明白高可用性依赖注入的概念

Please can you help how to mock MethodA() without making virtual, I didn't understand the concept of hi-perf dependency injection

推荐答案

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

It means you will have to templatize your production code. Using your example:

CSumWind类声明

CSumWind class declaration

class CSumWnd : public CBaseWnd
{

 private:
 bool MethodA()
};

Mocked CSumWnd类声明

Mocked CSumWnd class declaration

class MockCSumWnd : public CBaseWnd
{

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

生产类必须用模拟类CSumWind测试。现在,它变成模板,在测试中在生产代码和MockCSumWnd类中使用CSumWind类。

Production class which have to be tested with mocked class CSumWind. Now it becomes templated to provide using CSumWind class in production code and MockCSumWnd class in tests

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

private:
  CSumWndClass sumWnd;
};

在生产中 TestedClass 的实例化:

TestedClass <CSumWnd> obj;

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

Instantiation of TestedClass object in test executable:

TestedClass <MockCSumWnd> testObj;

这篇关于Mock非虚方法C ++(gmock)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆