Я хочу проверить метод JSF Backing-Bean «isInProgress», который делегирует сервис-метод «isInProgress». Когда метод службы генерирует исключение, компонент должен помещать событие в конкретный регистратор событий и возвращать значение false.Отказывание службы, которая выдает исключение?
Когда я отлаживаю следующий тест, я попадаю в блок catch. Обманутая служба не генерирует исключение, а возвращает «ответ по умолчанию», который является ложным для булевского. Что я делаю неправильно?
Я также задаюсь вопросом, можно ли каким-либо образом избежать попыток уловить вокруг вызова «когда», поскольку фактическое исключение проглатывается тестируемым компонентом. На самом деле я думаю, что «декларативно» передать имя метода «когда» должно быть достаточно. Есть ли способ получить этот уборщик?
@Test
public void testIsInProgressExeption() {
//prepare object and inputs
MyBean bean = new MyBean();
MyService service = mock(MyAdapterService.class);
bean.setService(service);
try {
when(bean.getService().isInProgress()).thenThrow(new Exception());
} catch (Exception e) {
//prepare expected object and result
MyBean expectedBean = new MyBean();
expectedBean.setService(service);
boolean expected = false;
//execute method under test
boolean actual = bean.isInProgress();
//check return values and exceptions
assertEquals(expected, actual);
//check that bean did not change unexpectedly
assertTrue(bean.equals(expectedBean));
//check sideeffects on event log
assertTrue(logEvents.containsMessage("MDI09"));
}
}
Для справки здесь является обновленный Тест:
@Test
public void testIsInProgressExeption() throws Exception {
//prepare object and inputs
MyBean bean = new MyBean();
MyService service = mock(MyAdapterService.class);
bean.setService(service);
when(bean.getService().isInProgress()).thenThrow(new Exception());
//prepare expected object and result
MyBean expectedBean = new MyBean();
expectedBean.setService(service);
boolean expected = false;
//execute method under test
boolean actual = bean.isInProgress();
//check return values and exceptions
assertEquals(expected, actual);
//check that bean did not change unexpectedly
assertTrue(bean.equals(expectedBean));
//check sideeffects on event log
assertTrue(logEvents.containsMessage("MDI09"));
}
, но service.isInProgress() выбрасывает исключение, поэтому компилятор заставляет меня справляться с этим! – Bastl
Ах, добавление бросков в test-decl делает. – Bastl
Добавить исключение в подписи методов тестирования –