НачатьНачать бесплатно

Юнит-тест: исключения при обмене валюты

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