2017-03-03 10 views
1

私はシンプルなラクダのルートがあります。テストのために生産コードを変更せずにラクダルートをテストするにはどうすればよいですか?

@Component 
public class HelloRoute extends RouteBuilder { 

    String startEndpoint; 

    @Override 
    public void configure() { 
     from(startEndpoint).process(new HelloProcessor()); 
    } 
} 

を、私は読んですべてが結果を格納するモックエンドポイントを追加すると言う:

from(startEndpoint).process(new HelloProcessor()).to("mock:result"); 

これは私が私のコードへの変更しなければならないことを意味しますモックを含めると、実稼働環境で実行されます。 https://camel.apache.org/mock.html

がどのように私は結果を評価するためのモックを使用しているユニットテストを書くのですが、同時にルータクラスはどのなしで本番に実行する必要があります:ラクダのdocumentatiuonは生産にモックを使用しないようにかなり明確ですルートの最後に:「結果モックを」ここ

to("log:blah") 
+0

[Apache Camelでの単体テスト生産ルートの作成方法](http://stackoverflow.com/questions/5664331/how-to-unit-test-production-routes-in-apache-camel) – ltsallas

答えて

2

のようなテストコードまたは他の人工、不要なエンドポイントは、あなたのテストケース

context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() { 
     @Override 
     public void configure() throws Exception { 
      weaveAddLast().to("mock:result"); 
     } 
}); 

これが追加されますに何ができるかです。このようにして、テスト用のルートを書き換えずに変更することができます。

関連する問題