Верблюжий маршрут не вызывается из хунит - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь протестировать ниже маршрута, но это не удалось, так как я ожидаю, что количество сообщений будет равно 1, но на самом деле это 0, даже первый метод beginTransaction в моем маршруте должен быть безоговорочно вызван один раз, но он не вызывается.

Как мне отладить в этой ситуации?Похоже, сам мой маршрут не вызывается.

Intead of vm:start:portfoliot-tnc Я пытался direct:start:portfoliot-tnc, в этом случае я получил ошибку org.apache.camel.component.directvm.DirectConsumerNotAvailableException: No consumers available on endpoint: direct://portfoliot-tnc. Exchange[ID-SPLS1800411-10N-1560229168214-0-1]

Что означает эта ошибка?Почему написано, что нет доступного потребителя, когда потребитель его высмеивает: результат, который высмеивает мою очередь сообщений.

application-test.properties

tp.portfolio-tnc.source-endpoint: vm:start:portfoliot-tnc

PortfolioRoute.java

from("{{tp.portfolio-tnc.source-endpoint}}")
    .routeId("portfolio-tnc-route")
    .log(LoggingLevel.INFO, logger,"***** PORTFOLIO-TNC ROUTE STARTED *****")
    .doTry()
        .bean(transactionManager, "beginTransaction()")
        .bean(clientApi, "search(${body},${header.region})")
        .setHeader("transactionSize", simple("${body.size()}"))
        ...
        ...
        ..

PortfolioRouteTest.java

@RunWith(CamelSpringBootRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {"camel.springboot.java-routes-include-pattern=**/Portfolio*"})
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, SecurityAutoConfiguration.class})
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@DisableJmx(true)
@ActiveProfiles("test")
public class PortfolioTncRouteTest {


    ...
    ... //Mocks
    ...

    @Test
    public void portfolioTncRouteTest() throws Exception {
        Mockito.when(clientApiService.search(Mockito.any(TxnChangeLog.class))).thenReturn(txns);
        Mockito.when(cache.getValue("frequencies", "8")).thenReturn("Monthly");
        Mockito.when(cache.getValue("currencies", "1002")).thenReturn("USD");
        Transaction transaction = new Transaction();
        transaction.setRefStatusId(2);
        Mockito.when(transactionService.findTransaction(Mockito.any(), Mockito.any())).thenReturn(transaction);
        producerTemplate.sendBody(txns);
        producerTemplate.start();
        Mockito.verify(transactionManager, Mockito.times(1)).beginTransaction();
        mock.expectedBodiesReceived();
        mock.expectedMessageCount(1);
        mock.assertIsSatisfied(30000);
    }

}


>> Stacktrace
Wanted but not invoked:
portfolioTncDbTransacitonManager bean.beginTransaction();
-> at org.tp.route.PortfolioTncRouteTest.portfolioTncRouteTest(PortfolioTncRouteTest.java:143)
Actually, there were zero interactions with this mock.
...
...
...

И хотя я исключил несколько маршрутов, это создает исключение при создании bean-компонента xyzRoute, поэтому мне пришлось высмеивать эти bean-компоненты в моем junit, что странно.

...