我刚开始进行单元测试(使用 BOOST 框架进行测试,但对于模拟我必须使用 Google Mock)并且我遇到了这种情况:
class A
{
static int Method1(int a, int b){return a+b;}
};
class B
{
static int Method2(int a, int b){ return A::Method1(a,b);}
};
因此,我需要创建模拟类 A,并使我的 B 类不使用 A 类中的真实 Method1,而是使用模拟。
我不知道该怎么做,也找不到类似的例子。
原文由 Jonhtra 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以将 B 类更改为模板:
然后创建一个模拟:
在每次测试之前,初始化静态模拟对象
MockA::mock
。另一种选择是直接调用
A::Method1
,在 B 类中创建一个仿函数对象(可能是 std::function 类型),然后在 Method2 中调用它。然后,它更简单,因为您不需要 MockA,因为您将创建一个回调到 MockCalc::Method1 到这个对象。像这样的东西:并初始化它: