如何在 gmock 中返回参数之一

How to return one of the in-parameters in gmock

本文关键字:参数 返回 gmock      更新时间:2023-10-16

我认为这听起来很简单,但我似乎不知道该怎么做。我正在使用这个模拟函数模拟一个 linux 套接字接口:

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

我想返回用 send 写入的字节数。

一个想法是这样的:

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

但这将始终返回零。

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

查看作弊程序,看起来这就是您想要的:

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