Dies ist, was ich erreichen möchte. In meinem Testgerät möchte ich eine Hilfsfunktion mit einem Parameter n
aufrufen, um dem Testgerät mitzuteilen, wie viele Initialisierungssequenzen erwartet werden. Einige in den Sequenzen verwendete Parameter sind in drei std::vector
Behältern gespeichert; fileDescriptor, handle, selectionObject
.Hinzufügen erwarteter Anrufe in einer Schleife
Was ich geschrieben habe, ist dies:
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));
}
}
Ich weiß, warum es nicht funktioniert. Es wird erwartet, dass alle Aufrufe an initialize
identisch sind, aber ich möchte noch verschiedene Aktionen (Parameter abhängig vom Schleifenzähler i
) für den ersten, zweiten, dritten, ..., n-ten Aufruf durchführen. Die aktuelle Implementierung erwartet nur einen Aufruf an initialize
egal Parameter n
. Ist es möglich, dies zu beheben und es irgendwie eine Schleife zu halten, oder muss ich die Aktionen mit einer WillOnce
Zeile für jede i
hinzufügen? Dies würde bedeuten, dass ich n
überprüfen und unterschiedliche Anzahl von WillOnce
Zeilen für verschiedene mögliche Werte von n
hinzufügen muss, die ich wirklich vermeiden möchte.
Danke, ich habe endlich diese an die Arbeit – Martin