2016-11-10 1 views
0

Ich teste eine Methode mit einer erwarteten Ausnahme. Ich muss auch überprüfen, dass einige Code aufgerufen wurde (auf einem Mocked-Objekt), nachdem die Ausnahme ausgelöst wird, aber die Überprüfung wird ignoriert. Hier ist der Code:Mockito: Wie zu verifizieren Methode wurde innerhalb einer anderen Methode aufgerufen, die immer Exception wirft?

public class ExceptionHandler { 

    @Autowired 
    private Sender sender; 

    public void handle(Exception exception) throws Exception { 
     if (!SomeException.class.isAssignableFrom(exception.getClass())) { 
     sender.sendMessage(ExceptionUtils.getStackTrace(exception)); 
     } 
     throw exception; 
    } 
} 

Hier ist der Testcode:

@Mock 
private Sender sender; 

@InjectMocks 
private ExceptionHandler handler; 

@Test 
public void testHandler() throws Exception { 
    SomeException someException = new SomeException(); 

    try { 
     handler.handle(someException); 
    } catch (SomeException thrownResult) { 
     assertEquals(someException, thrownResult); 
    } 

    verify(sender, times(1)).sendMessage(Mockito.anyString()); 
} 

Antwort

1

I also need to verify that some code was called (on a mocked object) after the exception is thrown, but verification is being ignored.

Das ist nicht wahr, diese Linie ist tatsächlich ausgeführt:

verify(sender, times(1)).sendMessage(Mockito.anyString()); 

Aber Die Überprüfung mit diesem Fehler schlägt fehl:

Wanted but not invoked: sender.sendMessage();

<...>

Actually, there were zero interactions with this mock.

Wie erwartet, wurde diese Methode nie aufgerufen, da Bedingung !SomeException.class.isAssignableFrom(exception.getClass()) nicht zufrieden war - Sie handler.handle mit Instanz SomeException aufrufen.

+0

Vielen Dank, Sie haben Recht! ich habe es verpasst –

Verwandte Themen