Aan de slagGa gratis aan de slag

Unittest: Database-bericht

Kijk naar de ErrorStore en InfoStore uit de les. Stel dat de methode process(String message) wordt gebruikt op een [WARN]-bericht; dat betekent dat het in geen van beide databases terechtkomt. Schrijf een test om dat te verifiëren.

Deze oefening maakt deel uit van de cursus

Introductie tot testen in Java

Cursus bekijken

Oefeninstructies

  • Controleer dat het bericht niet in infoStore is terechtgekomen.
  • Controleer ook dat het niet in errorStore is terechtgekomen met de times()-verifymethode.
  • Voeg in diezelfde instructie de databasemethode save() toe die niet is aangeroepen.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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);
    }
}
Code bewerken en uitvoeren