2013-06-10 2 views
17

ich einen() -Methode speichern haben, die eine Lücke gibt, so etwas wie:Mockito unterschiedliches Verhalten bei nachfolgenden Aufrufen einer void-Methode?

public void save(MyThing) throws SaveFailureException { ... } 

Der Anruf() zu speichern hat Logik wiederholen Sie die Ausnahme zu behandeln, und ich will, es testen, indem Sie den ersten spöttisch aus Aufruf von save() wirft eine Ausnahme und der zweite Aufruf ist erfolgreich.

Mockito hat eine nette Art und Weise aufeinanderfolgende Verhalten für nicht nichtig Methoden der Handhabung:

when(mock.save()).thenThrow(...).thenReturn(...) 

Wie mache ich das gleiche mit Methoden, die eine Lücke zurückkehren?

Antwort

17

Sie können das tun:

doThrow(...).doNothing().when(mock).voidMethod(); 

(edit: verwenden doNothing, wie @ Rogério erwähnt)

+1

Sie nicht bedeuten:. 'DoThrow (...) doReturn (...) '? –

+0

Hoppla ... Ja, tut mir leid ... – fge

+2

Es sollte "DoThrow (...). * DoNothing() *. When (Mock) .voidMethod()" statt. –