Я пытаюсь протестировать ниже маршрута, но это не удалось, так как я ожидаю, что количество сообщений будет равно 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, что странно.