У меня есть следующий код:
Код: Выделить всё
@Service
public class MyService {
...
@ApplicationModuleListener
public void onEvent(Event event) {
if(event.getSomeField().equals(someExpectedValue)) {
// do some expected code
}
else {
throw new UnexpectedValueException("fail!");
}
}
Код: Выделить всё
@SpringBootTest
class MyServiceTest {
@Autowired
MyService myService;
@Test
void testExceptionThrow {
Event event = new Event("someUnexpectedValue");
assertThrows(UnexpectedValueException.class, () -> myService.onEvent(event));
}
}
Когда я отлаживаю тест, он показывает, что во время выполнения достигается предложение else и возникает исключение. выбрасывается, но с этого момента он используется несколькими пружинными асинхронными механизмами. Наконец, похоже, что исключение используется на уровне AsyncExecutionInterceptor.invoke() и не возвращается к моему тестовому методу, который его вызвал.
Есть ли это? любой способ тестирования сценария исключения для метода прослушивателя событий, кроме имитирования броска с использованием метода When().thenThrow() Mockito?
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-throwing
Мобильная версия