Я использую googlemock для модульных тестов и пытаюсь смоделировать метод с параметром out array:
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. в массив, который она передает в проверяемый метод.
Однако этот подход не работает. Компилятор говорит что-то вроде:
невозможно указать явный инициализатор для массивов
Кто-нибудь знает, как издеваться над поведением такого параметра?
Спасибо.
На самом деле есть предикат для этого конкретного варианта использования: SetArrayArgument
(см. третий пример под Дразнящие побочные эффекты в Google Mock CookBook (http://code.google.com/p/googlemock/wiki/CookBook).
Ваш код станет:
double a_mockedValues[] = { 1., 2. };
ON_CALL(myMock, myFunc(_)).WillByDefault(SetArrayArgument<0>(a_mockedValues, a_mockedValues + 2));
Других решений пока нет …