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
Istruzioni dell'esercizio
- Verifica che il messaggio non sia finito in
infoStore. - Verifica anche che non sia finito in
errorStoreusando l’approccio di verifica contimes(). - 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);
}
}