3

単体テストに googlemock を使用しており、「out 配列パラメーター」を持つメソッドをモックしようとしています。

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

実際には、この特定のユースケースの述語があります:( Google Mock CookBookSetArrayArgumentを参照してください)

その場合、コードは次のようになります。

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