【发布时间】:2016-05-20 15:03:12
【问题描述】:
我试图在 Google Mock 中设置一个类成员函数参数值,但我得到了构建错误,我根本不明白发生了什么。有没有人可以解释一下。
函数原型为:
virtual int recv( Socket socket
, char *buffer
, int bufferLength
, int flags ) = 0;
我正在尝试使用:
TEST_F( IPV4SocketTests, Read_SockErr_ok )
{
Mock_SocketAdaptor *adaptor = new Mock_SocketAdaptor;
char *rcvBuffer = "testingRcvWorks";
EXPECT_CALL( *adaptor, recv( testing::_, testing::_, testing::_, testing::_ ) )
.WillRepeatedly( testing::DoAll(
testing::SetArgPointee<1>( rcvBuffer ),
testing::Return( strlen( rcvBuffer ) ) ) );
我得到的错误是关于 std::get 的转换。
【问题讨论】:
-
你能粘贴准确的错误信息吗?是 std::get<:tuple::size_type>() 您遇到问题还是其他问题?
-
其实
testing::SetArgPointee<1>( rcvBuffer )应该达到什么目的?您传递的第二个/第一个参数只是测试::_,因此您无论如何都无法访问它。 -
@TomaszKaminski 我仍在尝试掌握 Mock 的这一部分,是 testing::_ 错了吗?
-
@TomaszKaminski “无法访问它”是什么意思?
testing::_的使用表示该参数不会与某个值匹配,没有什么可以阻止SetArgPointee像 Paul 预期的那样工作。
标签: c++ unit-testing oop googletest googlemock