Test unitario: eccezioni nel cambio valuta
Uno scenario di errore possibile per l'app di cambio è che il server della banca non sia disponibile a causa di un guasto o problemi di rete. Per proteggerti da eccezioni che interrompono il flusso, hai inserito un blocco try/catch dentro il metodo convertEuroTo.
Simula lo scenario di errore facendo sì che l'oggetto mock EuropeanCentralBankServer lanci un'eccezione quando viene richiesto un tasso.
Questo esercizio fa parte del corso
Introduzione al Testing in Java
Istruzioni dell'esercizio
- Fai lanciare un'eccezione all'oggetto mock della banca quando viene chiamato
getRateEuroTo. - Crea esattamente l'oggetto eccezione che vuoi simulare.
- Verifica che il metodo
convertEuroTonon lanci un'eccezione ma restituisca-1in questo scenario.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
class Main {
public static void main(String[] args) {
launchMockitoTestsAndPrint(ExchangeAppTest.class);
}
}
class ExchangeAppTest {
@Test
void convertEuroTo_throwsException_whenBankUnavailable() {
EuropeanCentralBankServer bank = mock(EuropeanCentralBankServer.class);
ExchangeApp exchangeApp = new ExchangeApp(bank);
double euroAmount = 450;
// Stub the mock to throw an exception
when(exchangeApp.convertEuroTo("TST", 100)).____(new ____("Bank server is unavailable."));
double tstAmount = exchangeApp.convertEuroTo("TST", euroAmount);
// Assert on the return value of the method
____(____, ____);
}
}