我有EXPECT_CALL(MockObj, func("abc")).Times(1)
,而MockObj
是NiceMock
在我的测试功能中,除了MockObj.func("def")
之外,还有一个调用MockObj.func("abc")
。
我希望合理的做法是让Google Mock说
但相反,它“抱怨”:
首先请注意,由于调用了MockObj.func("abc")
,期望值仍然得到满足
我知道为什么GMock抛出错误:我在func
上声明了期望,因此它尝试将对func
的调用与期望匹配,但与参数不匹配,因此错误
精细。
但是,为什么GMock会抛出错误?由于参数不匹配,为什么选择此行为,即
最佳答案
您的问题“但是GMock为什么会引发错误?”的直接答案是:因为它是按这种方式设计的。
AFAIU googlemock-在您的情况下,googlemock的工作方式如下:
EXPECT_CALL(MockObj, func("abc"));
-表示:“我对我的测试中的Obj::func
感兴趣”MockObj
是NiceMock
的意思是:“我不关心Obj
的其他任何不是EXPECT_CALL明确主题的功能” 所以-如果您的被测代码调用
func("def")
-则google-mock会这样做:func
感兴趣-所以让我们检查可能您知道应该执行以下操作:
EXPECT_CALL(MockObj, func(StrNe("abc"))).Times(AnyNumber()); // meaning - do not careEXPECT_CALL(MockObj, func("abc")); // TImes(1) is default - you might skip it
关于c++ - 谷歌模拟-即使函数具有不同的参数,EXPECT_CALL也会触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44265713/