3

我正在使用 googlemock 进行单元测试,并尝试模拟具有“输出数组参数”的方法:

void MyMock::myFunc(double myVal[2]).

myFunc 方法应该将值存储在 myVal 数组中。

我如何模拟这种副作用?我尝试了以下方法:

double a_mockedValues[] = {1., 2.};
ON_CALL(myMock, myFunc(_)).WillByDefault(SetArgPointee<0>(a_mockedValues));

我的意图是 myFunc 的调用者将值 1. 和 2. 接收到它传递给模拟方法的数组中。

但是,这种方法行不通。编译器这样说:

无法为数组指定显式初始化程序

有人知道如何模拟这种参数的行为吗?

谢谢你。

4

1 回答 1

3

这个特定用例实际上有一个谓词:(SetArrayArgument参见Google Mock CookBook

您的代码将变为:

double a_mockedValues[] = { 1., 2. };
ON_CALL(myMock, myFunc(_)).WillByDefault(SetArrayArgument<0>(a_mockedValues, a_mockedValues + 2));
于 2013-01-14T11:20:39.007 回答