私は次のルートを持っていた:カスタムプロセッサをテストする方法 - 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.
こんにちはクラウス、ご返信ありがとうございます。 Bean内のログの書式設定をロガーとは独立させる場合は、ルートに次のような行を設定することを意味します。 ここで、methodThatFormatsLogsは、ログをフォーマットするカスタムプロセッサのプライベートメソッド?ありがとう –
paranza
あなたのBeanには2つのメソッドがあり、ログメッセージをフォーマットするメソッドと、最初に呼び出してメッセージを記録するメソッドはありません。その後、最初の方法をテストし、キャメルルートで2番目の方法を使用できます。 –
ありがとう、私はあなたが今何を意味するのか理解しています。この問題は、私の "書式設定"メソッドが実際には空白であるという事実に由来し、if条件が満たされたときに単にLOG.info( "{} some text"、arg1、arg2)を書くだけです。 – paranza