尝试在 GMock 代码中使用 WithArg;错误说它不存在

Trying to use WithArg in GMock code; error says it doesn't exist

本文关键字:WithArg 错误 不存在 GMock 代码      更新时间:2023-10-16

我试图在一些测试代码中使用WithArg。我试图编译的代码看起来像这样:

using ::testing::_;
using ::testing::Invoke;
using ::testing::WithArg;
EXPECT_CALL(myMock, MockMethodThatTakesAString(_))
                   .WithArg<0>(Invoke(this, &TestClass::FunctionThatTakesAString))
                   .Times(4);

当我尝试编译这个时,我得到错误

error: ‘class testing::internal::TypedExpectation<void(const std::basic_string<char>&)>’ has no member named ‘WithArg’

我在这里做错了什么?

WithArg<N>是一个动作适配器,而不是成员函数。要使用它,请将其设置为WillRepeatedly子句中的操作:

EXPECT_CALL( myMock, MockMethodThatTakesAString(_) )
       .Times(4)
       .WillRepeatedly(WithArg<0>(Invoke(this
                                       , &TestClass::FunctionThatTakesAString)));