如何模拟使用成员变量初始化的局部变量

How to mock a local variable initialized with the member variable

我有两个 类 Class A 和 Class SRD(示例 类 用于理解问题。真正的 类 是不同的)。 类 都具有相同的 Function(method1) 和相同的参数。两者都不是来自不同的 Classes。

Class SRD 是Class A 的成员。Class A 中的一个函数为SRD 创建一个新对象并调用method1()。它应该调用模拟函数。但它调用实际实现

我已经为 类 编写了 mock 类 并在 类 中定义了 mock 方法并在 TEST 函数中编写了 EXPECT_CALL

    class A{
        private:
            SRD* srd;

        public :
         bool  Method1();
         bool MethodX();
         SRD* getsrd() {return srd;}
    };

    bool A :: MethodX()
    {

        srd.Method1(); // Not Calling Mock Method - Calling Actual 
     //Implementation
    }

    bool A::Method1()
    {
        ....
    }

    class SRD{

    public:
       bool Method1();
    };

    class MockSRD : public SRD{
        MOCK_METHOD0(Method1, bool())
    };

    class MockA : public MockA{
        MOCK_METHOD0(Method1, bool())
    };


    bool SRD::Method1()
    {
        ....
    }

    class TestA : public A {};

    TEST_F(TestA, test1)
    {
        MockSRD srd;

        EXPECT_CALL(srd, Method1())
        .Times(testing::AnyNumber())
        .WillRepeatedly(Return(true));

        srd.Method1() //Working fine - Caling mock Method;
        MethodX()
    }

当我调用 s1.Method1() 时,它应该调用 mock 方法。我该怎么做?

我不想更改生产代码。

感谢您花时间回答问题。 @Chris Oslen & @sklott

我忘了将基础 class 方法设为 Virtual。当我更改基础 class 方法

时它工作正常