c++ - 模拟静态函数成员

标签 c++ unit-testing googletest googlemock

我正在尝试模拟 静态函数成员 与 gmock。我在 gMock Cookbook 上找到了一个部分谈论模拟自由功能。但是我不清楚..

例如,我有一个名为 的静态函数。 isActiveMode 我想 mock 。而不是调用 isActiveMode 直接,我必须为它引入一个接口(interface),并有一个调用静态函数的具体子类:

class MyClassInterface { 

public:
...
virtual bool isActive() = 0;

};

class MyClass: public MyClassInterface { 

public:
...
virtual bool isActive() 
{ 
    return isActiveMode();
} 

};

然后我定义模拟类:
class MyMock {

public:
MOCK_METHOD(bool, isActive, (), (override));

};

但这似乎不起作用..
有人知道如何进行这项工作吗?

最佳答案

您的模拟类应该派生自接口(interface)类。

class MyMock : public MyClassInterface {

public:
MOCK_METHOD(bool, isActive, (), (override));

};

如果这没有帮助,请提供 minimum reproducible example展示你如何使用模拟。

关于c++ - 模拟静态函数成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61376859/

相关文章:

c++ - 使用 CV_TM_CCORR_NORMED 进行 openCV 模板匹配

xcode - Swift 单元测试和 "build for testing"错误

android - 从非 Android 环境访问 SQLite 数据库

c++ - gmock 可以模拟重载方法吗?

c++ - 如何将 C++ 类的静态成员函数传递给模板并调用该函数

c++ - 在 C 程序中使用单个 C++ 类的最佳方式

c++ - 使用 smtp 发送电子邮件

unit-testing - 如何使用ChefSpec测试我的LWRP?

c++ - gmock 可以模拟未定义的方法吗?

c++ - EXPECT_EQ 和过载错误