我正在使用谷歌模拟。该文档说我们可以在EXPECT_CALL或ON_CALL中使用EXPECT_THAT,但是像这样的代码似乎没有编译:
EXPECT_CALL(obj, method(_, _)).Times(1).WillOnce(EXPECT_THAT(true, Eq(1)));
我知道EXPECT_THAT是一个宏,所以它扩展到一些不应该出现在那里的语句。那么“在EXPECT_CALL中使用EXPECT_THAT”是什么意思呢?怎么做?
由于
答案 0 :(得分:5)
你误解了documentation for matchers:
匹配器匹配单个参数。您可以在ON_CALL()或EXPECT_CALL()中使用它,或使用它直接验证值
然后,文档继续举例说明如何您可以使用匹配器来验证值:
EXPECT_THAT(value, matcher)
断言value
匹配matcher
。
这并不是说EXPECT_THAT
本身就是一个匹配者。所以你不能做你正在尝试的事情,但只能做更像的事情:
EXPECT_THAT(true, testing::Eq(1));
或
EXPECT_CALL(obj, method(testing::_, testing::Eq(1))).Times(1);