我有两个类A类和SRD类(用于理解问题的示例类。实际类是不同的)。两个类都具有相同的Function(method1)和相同的参数。两者都不来自不同的类。
Class SRD是Class A的成员。ClassA中的函数为SRD创建一个新对象并调用method1()
。它应该调用模拟功能。但它称为实际的实现方式
我为这两个类都编写了模拟类,并在两个类中都定义了模拟方法,并在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()
时,它应该调用模拟方法。我该怎么办?
我不想更改生产代码。
答案 0 :(得分:0)
感谢您抽出时间回答问题。 @克里斯·奥斯伦&@sklott
我忘记了将基类方法设置为Virtual。当我更改基类方法时