これは達成したいことです。私のテストフィクスチャでは、パラメータフィラーn
を使ってヘルパー関数を呼び出して、テストフィクスチャにいくつの初期化シーケンスが必要かを伝えたいと考えています。シーケンスで使用されるいくつかのパラメータは、3つのコンテナに格納されます。 fileDescriptor, handle, selectionObject
。それは働いていない理由を私は知っているループ内に予想されるコールを追加する
void MyTest::init_Ok(uint32_t n)
{
for (uint32_t i = 0; i < n; ++i)
{
fileDescriptor.push_back(i); // FDs starting at 0
handle.push_back(reinterpret_cast<void*>(18 + i)); // handles starting at 18
selectionObject.push_back(555 + i); // SOs starting at 555
EXPECT_CALL(MyMockApi::getApi(), initialize(Pointee(nullptr), StrEq("InitString"), MyMatcher()))
.WillOnce(DoAll(SetArgPointee<0>(handle[i]),
Return(INIT_OK)));
EXPECT_CALL(MyMockApi::getApi(), selectionObjectGet(handle[i], Pointee(nullptr)))
.WillOnce(DoAll(SetArgPointee<1>(selectionObject[i]),
Return(SELECTION_OK)));
EXPECT_CALL(MyMockApi::getApi(), finalize(handle[i]))
.WillOnce(Return(FINAL_OK));
}
}
:
私は何を書かれていることはこれです。 initialize
へのすべての呼び出しは同じであると予想されますが、第1、第2、第3、...、第n番目の呼び出しに対して異なるアクション(ループカウンタi
に依存するパラメータ)を実行したいと考えています。現在の実装では、パラメータn
によるinitialize
への1回の呼び出しのみが期待されます。これを修正して何らかの形でループを維持することは可能ですか、またはそれぞれi
に対してWillOnce
行のアクションを追加する必要がありますか?これは、私がn
をチェックして、の異なる番号をn
という異なる値に追加しなければならないことを意味します。これは避けたいものです。
おかげで、私は最終的に仕事にこれを得ました – Martin