ユニットテスト:為替での例外処理
為替アプリで起こりうるエラーの一つは、障害やネットワーク問題により銀行サーバーが利用できないケースです。予期せぬ例外で処理が中断されないよう、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
____(____, ____);
}
}