C++ googlemock-EXPECT_调用触发器,即使函数有不同的参数
我有一个C++ googlemock-EXPECT_调用触发器,即使函数有不同的参数,c++,unit-testing,googletest,googlemock,C++,Unit Testing,Googletest,Googlemock,我有一个EXPECT\u调用(MockObj,func(“abc”))。Times(1)和MockObj是一个NiceMock 在我测试的函数中,除了MockObj.func(“abc”)之外,还有一个调用MockObj.func(“def”) 我认为谷歌Mock说的话是合理的 哦,看,我们调用func(“def”),但是参数与 EXPECT_CALL;这里没什么可看的 但它却“抱怨”: 未知文件:失败 意外的模拟函数调用-执行以下位置指定的默认操作: C:/work/unit_test.cpp
EXPECT\u调用(MockObj,func(“abc”))。Times(1)
和MockObj
是一个NiceMock
在我测试的函数中,除了MockObj.func(“abc”)
之外,还有一个调用MockObj.func(“def”)
我认为谷歌Mock说的话是合理的
哦,看,我们调用func(“def”)
,但是参数与
EXPECT_CALL
;这里没什么可看的
但它却“抱怨”:
未知文件:失败
意外的模拟函数调用-执行以下位置指定的默认操作:
C:/work/unit_test.cpp:36:
Function call: func(84bf3d9 pointing to "def")
Returns: 1
Google Mock尝试了以下1个期望值,但不匹配:
单元测试.cpp:50:期望调用(MockObj,func(“abc”))
预期arg#0:等于指向“abc”的84c8b96
实际值:84bf479指向“def”
期望:被呼叫一次
实际:称为一次饱和和活跃
首先请注意,由于调用了MockObj.func(“abc”)
,所以仍然满足了期望
我理解GMock抛出错误的原因:我在func
上声明了一个expection,因此它试图将对func
的调用与预期匹配,但与参数不匹配,因此error
好的
但是为什么GMock会抛出一个错误?既然参数不匹配,为什么选择此行为,即
如果函数与现有的EXPECT\u调用
匹配,但与参数不匹配,则抛出错误
对于您的问题“为什么GMock会抛出错误?”的直接答案是:因为它就是这样设计的 AFAIU googlemock-在您的案例中,googlemock的工作方式如下:
EXPECT_调用(MockObj,func(“abc”)
-表示:“我对测试中的Obj::func
感兴趣”MockObj
beingNiceMock
的意思是:“我不关心Obj
的任何其他函数,它们不是EXPECT\u调用的明确主题。”func(“def”)
,那么google mock会这样做:
func
感兴趣-那么让我们检查一下
EXPECT_CALL(MockObj,func(StrNe(“abc”)).Times(AnyNumber());//意思-不在乎
期望调用(MockObj,func(“abc”);//默认时间(1)-您可以跳过它