Je souhaite obtenir des échanges d'un objet mockEndPoint dans une classe de test unitaire pour Camel Route, mais cela ne fonctionne pas.getExchange de mockEndPoint dans une classe de test d'unité pour Route de chameau ne se comporte pas comme prévu
Voici ma classe de test unitaire:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:camel-unit-test.xml")
public class ImportDatabaseRouteTest extends CamelTestSupport {
@Value("${sql.importDatabase}")
String oldEndPoint;
@Autowired
private ImportDatabaseRoute importDatabaseRoute;
@Autowired
private DriverManagerDataSource dataSource;
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return importDatabaseRoute;
}
@Before
public void mockEndpoints() throws Exception {
AdviceWithRouteBuilder adviceTest = new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
interceptSendToEndpoint(oldEndPoint)
.skipSendToOriginalEndpoint()
.to("mock:catchCSVList");
}
};
context.getRouteDefinitions().get(0).adviceWith(context, adviceTest);
}
@Override
public boolean isUseAdviceWith() {
return true;
}
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry jndi = super.createRegistry();
//use jndi.bind to bind your beans
jndi.bind("dataSource", dataSource);
return jndi;
}
@Test
public void testTheImportRoute() throws Exception {
MockEndpoint mockEndPointTest = getMockEndpoint("mock:catchCSVList");
context.start();
List<List<String>> test = (List<List<String>>) mockEndPointTest.getExchanges().get(0).getIn().getBody();
assertEquals("4227",test.get(1).get(0));
assertEquals("370",test.get(1).get(1));
assertEquals("",test.get(1).get(2));
mockEndPointTest.expectedMessageCount(1);
mockEndPointTest.assertIsSatisfied();
context.stop();
}
}
Et voici les résultats: java.lang.ArrayIndexOutOfBoundsException: 0
at java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:387)
S'il vous plaît aidez-moi à corriger. Merci beaucoup.
wow, vous êtes le meilleur. Je suis en train de lire votre livre dès maintenant pour apprendre Apache Camel. Merci beaucoup. –