Я написал Camel-Route, который использует DLC-Pattern с Processor
, который выполняется перед отправкой Exchange
в DLC.
errorHandler(deadLetterChannel("{{myDLCEndpoint}}")
.onPrepareFailure(getErrorProcessor()));
Во время моего маршрута я выбрасываю RuntimeException
, который затем обрабатывается errorProcessor
и DLC.Все работает, как и ожидалось, когда я запускаю приложение и запускаю маршрут.
Теперь я хотел написать юнит-тест, просто убедитесь, что он работает.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
@RunWith(SpringRunner.class)
public class MyRouteTest {
@MockBean
private ErrorProcessor errorProcessor;
@EndpointInject(uri = "{{quelle}}")
private ProducerTemplate quelle;
@EndpointInject(uri = "{{myDLCEndpoint}}")
private ProducerTemplate dlc;
@Test
@Transactional("myDataSourceTransactionManager") //For Rollback
public void test() throws Exception {
Mockito.verify(errorProcessor, never()).process(Mockito.any());
String inputXML = TestDataReader.readXML("myfile.xml");
assertNotNull(inputXML);
quelle.sendBody(inputXML);
}
}
Я запустил тести проверил журнал и, к сожалению, исключение происходит во время выполнения маршрута.Исключение обрабатывается верблюдом, и обработанный обработчик ошибок вызывается наверняка, потому что я его отладил:
К сожалению, модульный тест все еще успешно даже при Mockito.verify(errorProcessor, never()).process(Mockito.any());
И теперь я понятия не имею, почему он не выходит из строя, и какой результат я бы ожидал в такой ситуации?