IniziaInizia gratis

Unit test: Messaggio del database

Considera ErrorStore e InfoStore della lezione. Supponi che il metodo process(String message) venga usato su un messaggio [WARN], il che significa che non finirebbe in nessuno dei due database. Scrivi un test per verificarlo.

Questo esercizio fa parte del corso

Introduzione al Testing in Java

Visualizza il corso

Istruzioni dell'esercizio

  • Verifica che il messaggio non sia finito in infoStore.
  • Verifica anche che non sia finito in errorStore usando l’approccio di verifica con times().
  • Nella stessa istruzione, aggiungi il metodo del database, save(), che non è stato chiamato.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

public class Main {
    public static void main(String[] args) {
        launchMockitoTestsAndPrint(MessageProcessorTest.class);
    }
}

class MessageProcessorTest {

    @Test
    void process_savesNowhere_whenWrongMessageType() {
        InfoStore infoStore = mock(InfoStore.class);
        ErrorStore errorStore = mock(ErrorStore.class);
        MessageProcessor processor = new MessageProcessor(infoStore, errorStore);
        String message = "[WARN] The search is slow.";

        processor.process(message);

        // Verify infoStore was not called
        ____(infoStore);
        // Verify errorStore.save was called 0 times
        verify(errorStore, ____(0)).____(message);
    }
}
Modifica ed esegui il codice