Google Mock:在目标类的构造函数中实例化的模拟私有变量成员

Google Mock: Mock private variable member that is instantiated in target class's constructor

本文关键字:模拟 实例化 成员 变量 构造函数 Mock 目标 Google      更新时间:2023-10-16

我的问题与Mockito相同:模拟私有字段初始化,但适用于Google Mock框架。简而言之:

class Target {
private:
Person person = new Person();
public:
void testMethod() {
person.someMethod();
}
};

如何在为类进行单元测试时模拟person实例Target

这里没有答案:只是不要这样做。

你的问题是在这里new的电话。问题是:这使得测试变得困难,并且它还在TargetPerson类之间创建了非常紧密的耦合。

默认的替代方法是:向Target类提供一个工厂,该为您创建Person对象。

通过采用该解决方案,您可以

  • 避免需要嘲笑new
  • 你最终会得到一个更好的设计!

除非我误读了文档,否则无论如何C++嘲笑都不可能嘲笑对new的调用。