我有EXPECT_CALL(MockObj, func("abc")).Times(1),而MockObjNiceMock
在我的测试功能中,除了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感兴趣”
  • MockObjNiceMock的意思是:“我不关心Obj的其他任何不是EXPECT_CALL明确主题的功能”

  • 所以-如果您的被测代码调用func("def")-则google-mock会这样做:
  • 我们对func感兴趣-所以让我们检查
  • 我们不期望“def”-因此测试
  • 失败

    可能您知道应该执行以下操作:
    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/

    10-14 22:52