我正在使用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方法的数组中。
但是,这种方法不起作用。编译器说的是:
无法为数组指定显式初始值设定项
有人知道如何模仿这种参数的行为吗?
谢谢。
答案 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));