如何在 gmock 中将参数用作 return 值
How to use an argument as return value in gmock
我有以下电话:
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(DoAll(SaveArg<2>(&bufferSize), Return(make_pair(Success, bufferSize))));
我正在尝试 return 作为第二个 _
传递的任何值作为我在对中的第二个元素。这是最好的(或至少是正确的)方法吗?
此 bufferSize 变量已在测试中声明 class。
编辑:
换句话说:
假设我有以下内容:
class object{
pair<int, int> f(int x);
}
object obj;
constexpr int fixedValue = 5;
EXPECT_CALL(obj, f(_)).WillOnce(
Return(make_pair(fixedValue, <PARAMETER PASSED TO F>));
你的方法是对的,你去匿名化了第三个参数中的值。在我看来,使用 lambda 或自定义操作是更可取的方式。存储的 lambda 或动作可以在其他期望中重复使用。
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArgs<0, 2>([](Type1 Success, Type2 bufferSize) {
return make_pair(Success, bufferSize);
}));
或
ACTION_P2(ReturnPair, Success, bufferSize) {
return make_pair(Success, bufferSize);
}
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArgs<0, 2>(ReturnPair));
更专业因此更不受欢迎
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArg<2>([](Type2 bufferSize) {
return make_pair(someSpecifiedParameter, bufferSize);
}));
或
ACTION_P(ReturnPair, bufferSize) {
return make_pair(someSpecifiedParameter, bufferSize);
}
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArg<2>(ReturnPair));
我有以下电话:
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(DoAll(SaveArg<2>(&bufferSize), Return(make_pair(Success, bufferSize))));
我正在尝试 return 作为第二个 _
传递的任何值作为我在对中的第二个元素。这是最好的(或至少是正确的)方法吗?
此 bufferSize 变量已在测试中声明 class。
编辑:
换句话说:
假设我有以下内容:
class object{
pair<int, int> f(int x);
}
object obj;
constexpr int fixedValue = 5;
EXPECT_CALL(obj, f(_)).WillOnce(
Return(make_pair(fixedValue, <PARAMETER PASSED TO F>));
你的方法是对的,你去匿名化了第三个参数中的值。在我看来,使用 lambda 或自定义操作是更可取的方式。存储的 lambda 或动作可以在其他期望中重复使用。
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArgs<0, 2>([](Type1 Success, Type2 bufferSize) {
return make_pair(Success, bufferSize);
}));
或
ACTION_P2(ReturnPair, Success, bufferSize) {
return make_pair(Success, bufferSize);
}
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArgs<0, 2>(ReturnPair));
更专业因此更不受欢迎
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArg<2>([](Type2 bufferSize) {
return make_pair(someSpecifiedParameter, bufferSize);
}));
或
ACTION_P(ReturnPair, bufferSize) {
return make_pair(someSpecifiedParameter, bufferSize);
}
EXPECT_CALL(myMock, myFunction(someSpecifiedParameter, _, _))
.WillOnce(WithArg<2>(ReturnPair));