始める無料で始める

ユニットテスト:為替での例外処理

為替アプリで起こりうるエラーの一つは、障害やネットワーク問題により銀行サーバーが利用できないケースです。予期せぬ例外で処理が中断されないよう、convertEuroTo メソッド内に try/catch を実装しています。

このエラーシナリオを再現するために、レート取得時にモックの EuropeanCentralBankServer オブジェクトが例外を投げるように設定してください。

この演習はコースの一部です

Javaによるテスト入門

コースを見る

演習の手順

  • モックの銀行オブジェクトが 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
		____(____, ____);
    }
}
コードを編集して実行