Тест JUnit для Apache Camel Route с Mockito Mock не проходит - PullRequest
0 голосов
/ 01 марта 2019

Я написал 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);
    }
}

Я запустил тести проверил журнал и, к сожалению, исключение происходит во время выполнения маршрута.Исключение обрабатывается верблюдом, и обработанный обработчик ошибок вызывается наверняка, потому что я его отладил:

debugger: the mocked bean is called for sure!

К сожалению, модульный тест все еще успешно даже при Mockito.verify(errorProcessor, never()).process(Mockito.any());

И теперь я понятия не имею, почему он не выходит из строя, и какой результат я бы ожидал в такой ситуации?

1 Ответ

0 голосов
/ 01 марта 2019

Я идиот.Вызов Mockito.verify был до вызова quelle.sendBody.WAAAH.Извините, ребята, я просто не видел этого: -D

Правильный способ заставить Mockito работать:

        String inputXML = TestDataReader.readXML("myfile.xml");
        assertNotNull(inputXML);

        quelle.sendBody(inputXML);
        //call mockito AFTER the test is executed! 
        Mockito.verify(errorProcessor, never()).process(Mockito.any());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...