Aan de slagBegin gratis

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

Bekijk cursus

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.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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