Wie kann man in gmock aufeinanderfolgende Returns angeben?

8

In Mockito können wir mehrere Returns angeben (aus hier ) :

%Vor%

Gibt es eine Möglichkeit, mehrere Renditen für einen mit gmock gemachten Schein anzugeben? Derzeit habe ich:

%Vor%

was nicht kompiliert wird, weil ich mehrere Rücksendungen in gmock nicht herausfinden kann. Ist das mit gmock möglich? Wenn nicht, gibt es einen anderen Weg, dieses Problem zu lösen? Ich habe festgestellt, dass wir EXPECT mehrere Rückgabewerte wie:

können %Vor%

Ich habe jedoch keine Dokumente gefunden, die mehrere Returns mit ON_CALL verspotteten.

    
Paymahn Moghadasian 26.10.2015, 20:49
quelle

2 Antworten

9

ON_CALL wird mehr zum Festlegen des Standardverhaltens der Funktion verwendet. I.e. Sie wissen, dass im getesteten Code die Mocked-Funktion aufgerufen wird, Sie wollen einen Standardwert setzen, aber es ist eigentlich nicht wichtig, wie oft die Funktion aufgerufen wird.

Das Beispiel :

%Vor%

Um Ihr gewünschtes Verhalten zu erreichen, verwende ich Erwartungen - Sie haben bereits ein Beispiel dafür angegeben Frage, nur um mehr zu zeigen - ein Beispiel, wenn Sie 1 , 2 dann immer 3 erwarten:

%Vor%

EXPECT_CALL "way" könnte problematisch sein, wenn Sie dies in der Test-Appliance SetUp festlegen möchten - und bei einigen Tests wird foo nur einmal aufgerufen. Aber natürlich gibt es Möglichkeiten, ON_CALL return value für nachfolgende Aufrufe zu "steuern" - aber Sie müssen es mit speziellen Aktionen tun - wie das Ergebnis einer Funktion zu bekommen - wie in diesem Beispiel:

%Vor%     
PiotrNycz 26.10.2015, 23:06
quelle
0

@ PiotrNycz's Antwort ist korrekt und die bevorzugte Lösung.

Ein alternativer Ansatz über eine Lambda-Funktion kann Ihnen mehr Flexibilität geben:

%Vor%     
Roland Ettinger 19.03.2018 12:14
quelle