【发布时间】:2017-05-30 15:00:44
【问题描述】:
我有EXPECT_CALL(MockObj, func("abc")).Times(1) 和MockObj 是NiceMock
在我的测试函数中,除了MockObj.func("abc")之外,还有一个调用MockObj.func("def") 。
我希望 Google Mock 说的合理的做法是
哦,看我们调用
func("def"),但参数不匹配EXPECT_CALL;这里没什么可看的
但它反而“抱怨”:
未知文件:失败
意外的模拟函数调用 - 采取在以下指定的默认操作:
C:/work/unit_test.cpp:36:
Function call: func(84bf3d9 pointing to "def") Returns: 1Google Mock 尝试了以下 1 个期望,但不匹配:
unit_test.cpp:50: EXPECT_CALL(MockObj, func("abc"))...
预期的参数 #0:等于 84c8b96 指向“abc”
实际:84bf479 指向“def”
预期:被调用一次
实际:调用一次 - 饱和并激活
首先注意到期望仍然满足,因为调用了MockObj.func("abc")
我明白为什么 GMock 会抛出错误:我在 func 上声明了一个期望,所以它试图将对 func 的调用与期望相匹配,但它与参数不匹配,所以 错误
很好。
但为什么 GMock 会抛出 错误?由于参数不匹配,为什么选择此行为,即
如果函数匹配现有的
EXPECT_CALL但不匹配参数,则抛出错误
【问题讨论】:
标签: c++ unit-testing googletest googlemock