我是google模拟的初学者,我不确定如何使用它和这个概念。
如果我正在尝试从一个类中测试一个方法,而该类正在从不同的类中调用其他方法。我是否需要从Test方法调用的不同类中模拟所有这些方法。这是一个例子:
class A {
public:
A () {}
int setnum(int num) {//do some stuff return 1 or 0//
}
private:
int _num;
};
class B {
public:
B (){}
int init(A *a, int number){
if(a->setnum(number))
return 1;
return 0;
}
void setNum(int num){_num=num;}
private:
A *_a;
int _num;
};
class C {
public:
int doSoemthing(A *a, int number){
if (domore(a,number))
return 1;
return 0;
}
int domore(A *a, int number){
if(_b.init(a,number))
return 1;
return 0;
;}
private:
B _b;
};
我需要模拟需要测试我的Test方法的类A和B中的所有方法吗?或者我可以只模拟一个Class,并测试该类是否正常工作。
我不确定100%,但是在您的示例中,您根本不需要使用模拟。您可以在这里非常轻松地创建对象。
[当我期望将调用某些方法并应返回特定值时,我将使用模拟方法-我不是在测试此方法,但例如if-statement:
A a;
if(a.method())
{
// some logic
}
EXPECT_CALL(aMock.method()).WillOnce(Return(true));
但是您可以在更多情况下使用它(例如:您可以避免创建非常大的类,并用模拟对象替换它)。