c++ - 在 EXPECT_CALL 中使用 google mock 的 EXPECT_THAT?

标签 c++ mocking googlemock

我正在使用谷歌模拟。文档说我们可以在 EXPECT_CALL 或 ON_CALL 中使用 EXPECT_THAT,但像这样的代码似乎无法编译:

EXPECT_CALL(obj, method(_, _)).Times(1).WillOnce(EXPECT_THAT(true, Eq(1)));

我知道 EXPECT_THAT 是一个宏,所以它扩展为一些不应该出现在那里的语句。那么“在 EXPECT_CALL 中使用 EXPECT_THAT”是什么意思呢?怎么做?

谢谢

最佳答案

你误解了 documentation for matchers :

A matcher matches a single argument. You can use it inside ON_CALL() or EXPECT_CALL(), or use it to validate a value directly

然后文档继续给出一个示例,说明如何您可以使用匹配器来验证值:

EXPECT_THAT(value, matcher)Asserts that value matches matcher.

这并不是说 EXPECT_THAT 本身就是一个匹配器。所以你不能做你正在尝试的事情,而只能做更像的事情:

EXPECT_THAT(true, testing::Eq(1));

EXPECT_CALL(obj, method(testing::_, testing::Eq(1))).Times(1);

关于c++ - 在 EXPECT_CALL 中使用 google mock 的 EXPECT_THAT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13926769/

相关文章:

c++ - Google Mock中如何访问私有(private)成员

c++ - gmock.h 不包含在我的 Google 测试的外部依赖项中

c++ - Google-Mock 一个已经声明的方法

c++ - libsvm(C++)始终输出相同的预测

c++ - 禁用 MSVC 的异常

c++ - 模拟 C++ 标准库

testing - 如何在测试中模拟外部依赖?

c++ - 在 gmock 中使用指向带有 EXPECT_CALL 的模拟对象的指针会导致段错误或默认处理程序启动

c++ - 如果没有明确的 < 运算符,std::less 如何工作?

c++ - 终止调用引发异常中止陷阱 : 6