如何验证是否使用相同的引用调用了2个模拟方法?

时间:2019-02-19 14:23:46

标签: c++ gmock

假设我正在测试一个声明一些内部变量(在堆栈上)的方法。将该变量通过引用传递给一个对象(方法setupFoo())以用正确的值填充,然后通过引用传递给另一对象(方法useFoo())以使用值。

如何编写我的EXPECT_CALL和匹配器以验证对模拟方法的两次调用都获得了相同引用?现在,我只是使用_来忽略引用。

1 个答案:

答案 0 :(得分:3)

您可能会做类似的事情:

const void* ref = nullptr;
EXPECT_CALL(mock, setupFoo(_)).WillOnce(Invoke([&](const auto& ptr) { ref = &ptr;}));
EXPECT_CALL(mock, useFoo(_)).WillOnce(Invoke([&](auto& ptr) { EXPECT_EQ(ref, &ptr);}));