QList heightsFromCsvResult の要素を出力パラメーターとして返すメソッド呼び出しに Gmock を使用します。現在動作しているコードは次のとおりです。
EXPECT_CALL(*_mockAttributeRepository, getGeometryHeightValues(_,_))
.WillOnce(DoAll(SetArgReferee<1>(heightsFromCsvResult.at(0)), Return(true)))
.WillOnce(DoAll(SetArgReferee<1>(heightsFromCsvResult.at(1)), Return(true)))
.WillOnce(DoAll(SetArgReferee<1>(heightsFromCsvResult.at(2)), Return(true)))
.WillOnce(DoAll(SetArgReferee<1>(heightsFromCsvResult.at(3)), Return(true)));
からの最初のパラメータ lineNumber
getGeometryHeightValues(int lineNumber, QPair<QString, QString>)
heightsFromCsvResult.at(lineNumber) のインデックスです。
ここで、より一般的な方法で Gmock を使用してみます。
int* mockLineNumber = new int;
EXPECT_CALL(*_mockAttributeRepository, getGeometryHeightValues(_,_))
.Times(4)
.WillRepeatedly(DoAll(SaveArg<0>(mockLineNumber), SetArgReferee<1>(heightsFromCsvResult.at(*(mockLineNumber))), Return(true)));
しかし、mockLineNumber は Gmock によって作成されることはないため、このコードは機能しません。しかし、EXPECT_CALL は満たされています。
コードに問題がある人はいますか?