Я не могу утверждать на поддельных конечных точках.Я использую инъекцию JUnit и CDI в контейнере WildFly с маршрутами Java DSL.
- Я создаю тестовый класс, расширяющий CamelTestSupport
- Я внедряю поле CamelContext, чтобы использовать его для остановки различных компонентови для использования совета
- я установил useadvic с, чтобы контекст не запускался сам по себе
- тестовый класс наследовал контекст типа ModelCamelContext, который, кажется, не имеет отношения к моему введенному полю CamelContext
- все маршруты создаются в введенном поле CamelContext, а не в унаследованном ModelCamelContext
- , однако весь механизм насмешки CamelTestSupport использует исключительно внутренний контекст ModelCamel
.... так что, что бы я ни издевался, это НЕ то, что я советую :), и все утверждения по праву терпят неудачу.
@RunWith(Arquillian.class)
public class MyTest extends CamelTestSupport {
@Override
public boolean isUseAdviceWith() {
return true;
}
@Inject
private CamelContext camelContext;
@Test
public void someTest() {
camelContext.getRouteDefinition("routeid").adviceWith(camelContext,
new AdviceWithRouteBuilder() {
@Override
public void configure () throws Exception {
mockEndpoints();
}
});
Collection list = context.getEndpoints(); // the ModelCamelContext is always empty, looks bad
Collection list2 = camelContext.getEndpoints(); // has both route endpoints AND mocks, looks good
getMockEndpoint("mock:someid").expectedMessageCount(1); // will always CREATE a new endpoint in the empty modelcamelcontext
getMockEndpoint("mock:someid", false).expectedMessageCount(1); // will always crash, that endpoint ID is in the other context...
Я бы отказался от введенного CamelContext, но все маршруты создаются только там, я не могу сказать, почему.Контекст ModelCamelContext в CamelTestSupport ВСЕГДА пуст, есть кое-что, что я инициализирую иначе / неправильно, но я не могу сказать, что.Кто-нибудь успешно использовал тест Camel CDI с макетами?