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
Oefeninstructies
- Controleer dat het bericht niet in
infoStoreis terechtgekomen. - Controleer ook dat het niet in
errorStoreis terechtgekomen met detimes()-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);
}
}