Unit test: Pengecualian valuta asing
Salah satu skenario kesalahan yang mungkin pada aplikasi penukaran adalah server bank tidak tersedia karena gangguan atau masalah jaringan. Untuk mencegah pengecualian yang mengganggu, Anda telah menulis blok try/catch di dalam metode convertEuroTo.
Simulasikan skenario kesalahan dengan membuat objek mock EuropeanCentralBankServer melempar pengecualian saat sebuah kurs diminta.
Latihan ini adalah bagian dari kursus
Pengantar Pengujian di Java
Petunjuk latihan
- Buat objek mock bank melempar pengecualian ketika
getRateEuroTodipanggil. - Buat objek pengecualian persis seperti yang ingin Anda simulasikan.
- Verifikasi bahwa metode
convertEuroTotidak melempar pengecualian, tetapi mengembalikan-1dalam skenario ini.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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
____(____, ____);
}
}