2017-12-08 16 views
0

ルーティング用のユニットテストを作成しようとしています。 私はどのように私は「barProcessor」と「bieProcessor」を模擬することができ、キャメル:テストするプロセッサをモックするルート

from ("direct:getA") 
    .routeId("get-a").startupOrder(1) 
    .process(exchange -> { 
     QueryObject queryObject = exchange.getIn().getBody(QueryObject.class); 
     exchange.getIn().setHeader(foo, queryObject.getH()); 
     exchange.setOut(exchange.getIn()); 
    }) 
    .choice() 
     .when(header(foo).isEqualTo(fooConstant.bar)) 
      .process("barProcessor") 
     .when(header(foo).isEqualTo(fooConstant.bie)) 
      .process("bieProcessor") 
    .end(); 

私の質問は、以下のルート設定がありますか?

私はadviceWithを使用しようとしましたが、私はrouteDefinitionを取得できませんでした。 context.getRouteDefinitions()は空のリストを返します。

編集: 以下は私のテストのコードスニペットです。

RouteDefinition routeDef = context.getRouteDefinition("get-a"); 
routeDef.adviceWith(context, new AdviceWithRouteBuilder() { 
     @Override 
     public void configure() throws Exception { 
      interceptSendToEndpoint("*barProcessor*").process(
        new Processor() { 
         @Override 
         public void process(Exchange exchange) { 
          System.out.println("bar"); 
         } 
        } 
      ); 
      interceptSendToEndpoint("*bieProcessor*").process(
        new Processor() { 
         @Override 
         public void process(Exchange exchange) { 
          System.out.println("Bie"); 
         } 
        } 
      ); 
     } 
    }); 

String request = <JSON Request>; 
websocket.sendTest(request); 

しかし、context.getRouteDefinition("get-a");はnullを返しています。私もcontext.getRouteDefinitions()を使用した場合、空のリストを返します。

+0

は私の編集を参照してください@MaciejKowalskiが –

+0

に行くのがたくさんある..あなたがその場合は、行う必要があります正確に何も...何をしたか私たちを見ます。ありがとう。 – Ronnie

答えて

0

この問題の原因が見つかりました。 createRouteBuilderとcreateJndiContextをオーバーライドするのを忘れました。

@Override 
protected RouteBuilder createRouteBuilder() { 
    return new SampleRoute(<param>); 
} 

@Override 
protected JndiContext createJndiContext() throws Exception { 
    JndiContext context = new JndiContext(); 
    context.bind("barProcessor", new BarProcessor()); 
    context.bind("bieProcessor", new BieProcessor()); 
    return context; 
} 

私は、このリンクから解決策を見つけた:Unit Test

関連する問題