2013-06-06 2 views
10

Ich weiß, dass Sie die Zeiten, die Methode eines bespitzelten Objekts aufgerufen wurde, überprüfen können. Können Sie das Ergebnis des Methodenaufrufs überprüfen?Mockito überprüfen Sie die Rückkehr eines spionierten Objekt-Methode

Etwas wie das Folgende?

verify(spiedObject, didReturn(true)).doSomething(); 
+3

@BrianRoach diese Frage ist über den Wert zurückgegeben von einem ausspionierten Objekt nicht den Wert übergeben –

Antwort

13

Um die Anzahl der Male, überprüfen sie aufgerufen wurde, verify(spiedObject, times(x)).doSomething() verwenden.

Sie sollten den vom gespiegelten Objekt zurückgegebenen Wert NICHT überprüfen. Es ist nicht das zu testende Objekt, also überprüfen Sie, was es zurückgibt. Überprüfen Sie stattdessen das Verhalten des getesteten Objekts als Reaktion auf den vom Spion zurückgegebenen Wert.

Auch wenn Sie nicht wissen, welcher Wert von dem ausspionierten Objekt zurückgegeben wird, wäre es besser, einen Spott anstelle eines Spions zu verwenden.

+1

in Ordnung danke. Das mache ich, ich war nur neugierig. – David

+1

Manchmal möchten Sie den Rückgabewert überprüfen, um beispielsweise das Ergebnis einer Berechnung zu überprüfen. Oder Sie spionieren beispielsweise an einer Sensorklasse und möchten sicherstellen, dass der Sensor einen "Alarm" -Status zurückgibt, wenn er den Eingangstyp empfängt, der die "Warnung" auslöst. –

+1

@ luis.espinal Ihre obige Beschreibung sieht aus wie Test des ausspionierten Objekts (Überprüfung des Alerts bei Alerteingabe). Dies sollte in einem Test für das ausspionierte Objekt durchgeführt werden, nicht in einem Test für ein Objekt, das das ausspionierte Objekt verwendet. Ich würde auch vorschlagen, dass, wenn es ein kompliziertes Verhalten hinter einem Ergebnis der Warnung gibt, sollten Sie eine Stubbed-Methode verwenden. –