如何 return gmock 中的输入参数之一

How to return one of the in-parameters in gmock

我认为这听起来很简单,但我似乎无法弄清楚如何去做。我正在使用这个模拟函数模拟 linux 套接字接口:

MOCK_CONST_METHOD4(send, int(int socketDescriptor, const void* buffer, size_t n, int flags));

我要return写入的字节数send

一个想法是这样的:

  uint32_t nBytes = 0;

  EXPECT_CALL(socketMock, send(124, _, _, MSG_NOSIGNAL))
    .WillOnce(DoAll(SaveArg<2>(&nBytes),
                    Return(nBytes)));

但这总是 return 零。

我应该怎么做 Return(Arg<2>)

看着 CheatSheat 看起来这就是你想要的:

EXPECT_CALL(socketMock, send(124, _, _, MSG_NOSIGNAL))
    .WillOnce(::testing::ReturnArg<2>()));