使用googlemock模拟const指针参数的副作用

时间:2013-01-14 10:14:19

标签: c++ mocking googlemock

我正在使用googlemock进行单元测试,我尝试模拟一个具有'out array parameter'的方法:

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.接收到它传递给mocked方法的数组中。

但是,这种方法不起作用。编译器说的是:

无法为数组指定显式初始值设定项

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

谢谢。

1 个答案:

答案 0 :(得分:3)

实际上有一个针对此特定用例的谓词:SetArrayArgument(请参阅Google Mock CookBook中{em>模拟副作用下的第三个示例<({3}})。< / p>

您的代码将成为:

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