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

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

我的问题与 相同,但针对的是 Google Mock 框架。简而言之:

class Target {
private:
    Person person = new Person();

public:
    void testMethod() {
        person.someMethod();
    }
};

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

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

您的问题是在此处调用 new。事情是:这使得测试变得困难,并且它还在 TargetPerson class.

之间建立了非常紧密的耦合

默认替代方案是:为 Target class 提供一个 factory 为您创建 Person 对象。

通过寻求该解决方案,您

  • 避免需要模拟对 new
  • 的调用
  • 你最终得到了更好的设计!

并且除非我误读了 documentation,否则 C++ 模拟不可能对 new 进行模拟调用。