如何返回 gmock 中的参数之一

Mar*_*n G 3 c++ unit-testing gmock

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

MOCK_CONST_METHOD4(send, int(int socketDescriptor, const void* buffer, size_t n, int flags));
Run Code Online (Sandbox Code Playgroud)

我想返回用send.

一个想法是这样的:

  uint32_t nBytes = 0;

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

但这将始终返回零。

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

Sha*_*ron 6

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

EXPECT_CALL(socketMock, send(124, _, _, MSG_NOSIGNAL))
    .WillOnce(::testing::ReturnArg<2>()));
Run Code Online (Sandbox Code Playgroud)

  • @bgura这个问题在这里解决:/sf/ask/4267115751/ (2认同)