我正在使用谷歌模拟&谷歌测试,我有一个对象,如:
class Foo {
public :
Foo(){}
virtual void method(int arg) {
int var = a(arg) ;
if (var<5){
b() ;
}
}
virtual int a(int arg){
// do stuff
}
virtual int b(){
// do stuff
}
}
我想检查a()被调用一次而b()不是每当失败(=返回值<5) 所以我写了类似的东西:
MockFoo mock ;
mock.method(badArg);
EXPECT_CALL(
mock,
a
)
.Times(1) ;
EXPECT_CALL(
mock,
a
)
.Times(0) ;
但gtest告诉我,这些方法都没有被调用,我应该使用什么?
感谢您的解释
答案 0 :(得分:1)
要正确使用gmock,您需要在运行真实内容之前设置 之前的期望值。通过这种方式,gmock知道即将发生什么,并且能够分析真实的东西是否真的符合要求。否则,如果你在设定你的期望之前调用该功能,那就像是在你扔球之后要求接球手进入他的待命位置。接球手将缺席。
在您的情况下,您需要以下内容:
MockFoo mock ;
// Catchers ready!
EXPECT_CALL(mock, a)
.Times(1) ;
EXPECT_CALL(mock, b)
.Times(0) ;
// Here's the ball!!
mock.method(watermelon);