Юнит-тест: исключения при обмене валюты
Один из возможных сценариев ошибки в приложении для обмена валюты — недоступность банковского сервера из-за сбоя или проблем с сетью. Чтобы защититься от критических исключений, в метод 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
____(____, ____);
}
}