Wie ich immer wieder erwarten, eine Reihenfolge der Aufrufe?
Schreibe ich einen test, um zu überprüfen, die Reihenfolge der Aufrufe auf einer Bildbearbeitungs-thread. Das entsprechende Stück von test-code sieht wie folgt aus:
Sequence s1, s2;
...
EXPECT_CALL(*mMockVideoSource, getFrame()).InSequence(s2).WillRepeatedly(Return(mFakeBuffer));
EXPECT_CALL(*mMockProcessor, processFrame(_,_)).InSequence(s2).WillRepeatedly(Return(0));
EXPECT_CALL(*mMockVideoSource, releaseFrame(_)).Times(AnyNumber()).InSequence(s2);
...
In diesem Fall die Reihenfolge der Aufrufe ist extrem wichtig. getFrame()
, processFrame()
und releaseFrame()
muss aufgerufen werden, in dieser Reihenfolge. Leider ist der obige code ist nicht wirklich vollbringen, was ich will. Der obige code erlaubt getFrame()
werden immer wieder aufgerufen, bevor der Anruf zu processFrame()
und ein Aufruf an getFrame()
nach releaseFrame()
gilt als Fehler, da es unterbricht die Sequenz.
Gibt es eine Möglichkeit zu erwarten, dass eine bestimmte Reihenfolge der Aufrufe immer wieder? Ich interessiere mich nicht, wie oft die Sequenz ausgeführt wird, so lange, wie die Funktionen aufgerufen werden, um: Holen Sie sich -, Prozess -, release -, get -, Prozess -, release...
- Warum sind Sie mit
WillRepeatedly
dann anstatt z.B.WillOnce
? - Mein Ziel ist es, die Erwartungen zu halten, immer wieder. Wenn ich WillOnce, jeder Anruf wird nur zulässig sein, ein mal aufgerufen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen, die Seite Aktion auf den Aufruf Ihrer mock (https://code.google.com/p/googlemock/wiki/CookBook#Combining_Actions) und einige Globale Zustand wie "lastAction".
Seite Aktion Aussehen wird:
Können Sie binden Sie es zu verspotten, indem Sie: