單元測試:外匯例外狀況
兌換應用程式的一種可能錯誤情境,是因為中斷或網路問題導致銀行伺服器無法使用。為了避免造成中斷的例外,你已在 convertEuroTo 方法內加入 try/catch。
請模擬此錯誤情境:讓 mock 的 EuropeanCentralBankServer 物件在查詢匯率時拋出例外。
本練習屬於課程
Java 測試入門
練習說明
- 讓 mock 的 bank 物件在呼叫
getRateEuroTo時拋出例外。 - 建立你想要模擬的確切例外物件。
- 驗證
convertEuroTo方法在此情境下不會拋出例外,而是回傳-1。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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
____(____, ____);
}
}