2016-11-08 4 views
0

私は次のルートを持っていた:カスタムプロセッサをテストする方法 - Apacheのキャメル春のテスト

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
     <route> 
      <from uri="activemq:topic:inbox" /> 
      <log message="To: ${in.header.recipients}" /> 
      <to uri="bean:myLogger" /> 
     </route> 
</camelContext> 

bean:myLoggerは私が取得していますログメッセージをフォーマットするための私のカスタムプロセッサです。私のカスタムプロセッサのprocessメソッドは、単にメッセージのタイプ(CCなど)と受信者の電子メールを追加するプライベートメソッドを呼び出します。私は実際の結果ログをテストする方法を見て苦労しています。私はCamelSpringTestSupportを使用していますし、それがmyLoggerエンドポイントをテストすることになると私はOKだ:

@Produce(uri = "activemq:topic:inbox") 
    protected ProducerTemplate template; 

    @Override 
    protected AbstractApplicationContext createApplicationContext() { 
     return new ClassPathXmlApplicationContext("file:src/main/resources/my-camel-context.xml"); 
    } 

    @Test 
     public void testLogEndpoint() throws Exception { 
      String body = "Hello World"; 
      template.sendBody("activemq:topic:inbox", body); 
      LOG.info("This is the message body we sent {} ", body); 
     } 

はしかし、私は返さログのフォーマットをテストする方法を実際に確認していません。上記の例と同様に受信者の電子メールを送信しますか?しかし、フォーマットが正しいかどうかをどうやって確認するのですか?私は実際の解決策よりもアプローチについてもっと探しています。

はあなたの助けのためにどうもありがとうございます、

I.

答えて

1

ログは、そのような別のパブリック/パッケージ方法としてロガーに独立した豆の書式作成し、その後、これをテストし、プレーンユニットテストを書きます方法。それで、そのテストでCamelを使う必要は全くありません。

できない場合は、ファイルにログするようにロガーを設定してから、そのファイルを読み込んで、必要に応じてログをテストしてください。

+0

こんにちはクラウス、ご返信ありがとうございます。 Bean内のログの書式設定をロガーとは独立させる場合は、ルートに次のような行を設定することを意味します。ここで、methodThatFormatsLogsは、ログをフォーマットするカスタムプロセッサのプライベートメソッド?ありがとう – paranza

+0

あなたのBeanには2つのメソッドがあり、ログメッセージをフォーマットするメソッドと、最初に呼び出してメッセージを記録するメソッドはありません。その後、最初の方法をテストし、キャメルルートで2番目の方法を使用できます。 –

+0

ありがとう、私はあなたが今何を意味するのか理解しています。この問題は、私の "書式設定"メソッドが実際には空白であるという事実に由来し、if条件が満たされたときに単にLOG.info( "{} some text"、arg1、arg2)を書くだけです。 – paranza

関連する問題