重量のある入力エンドポイントを模擬したものに置き換えてメッセージを送信するにはどうすればよいですか?Camel - 模擬入力へのメッセージの送信
私には次のルートがあります。
from("spring-ws:rootqname:{http://myNameSpace}SomeRequest?endpointMapping=#endpointMapping").
processor(new VeryComplicatedProcessor()).
to(etc).
to(etc)...
つまり、完全にロッタ処理を行うスプリングWebサービスです。
このルートをテストする1つの方法は、WebサーバーでWebサービスを起動してメッセージを送信することですが、それは発生させたいオーバーヘッドよりもはるかにオーバーヘッドです。
public class RouteTest extends CamelSpringTestSupport {
@Override
public String isMockEndpoints() {
return "*"; // mock everything
}
@Test
public void simpleDirectTest() throws Exception {
String realURI = "spring-ws:rootqname:{http://myNameSpace}SomeRequest?endpointMapping=#endpointMapping";
String mockedURI = "mock:" + realURI;
String msg = buildSomeSoapMsg();
Object out = template.requestBody(mockedURI, msg);
log.debug(out.toString());
}
...
}
を...と、全ルートの実行を持っていると私に応答を返す:
代わりに、私は私mock all of my endpoints場合、私はこれを行うことができる必要があることを期待したいです。代わりに、私はちょうど私にメッセージを送って戻ってきて、ルートは走っていません。
モックに関する私の理解は間違っていますか?もしそうなら、これを達成する別の方法がありますか?私は実際にこれらのルートをテストするためにWebサービスを実際に起動する必要はありません。
ありがとうございます。
EDIT - この問題を解決するためにAdviceWithを使用すると分かりましたが、AdviceWithは上記のように入力ではなく出力でのみ機能するようです。
ありがとうございました。私は結局前者をやって、サービスを分割してダイレクトを使用しました。 –
クール...最初はちょっと混乱していますが、メッセージをダンプする宛先エンドポイントと考えています –