0
が、私は少しシンプルなルートと同様の問題があった失敗キャメルNotifyBuilder条件は
PerfTestRouteBuilder
@Component
public class PerfTestRouteBuilder extends SpringRouteBuilder {
/* (non-Javadoc)
* @see org.apache.camel.builder.RouteBuilder#configure()
*/
@Override
public void configure() throws Exception {
from("direct:test-input")
.log("Creating test response object")
.process(exchange -> {
WOutputAccnLayout stubResponse = new WOutputAccnLayout();
stubResponse.setWOutAccnAccNum("AB999999999");
stubResponse.setWOutAccnCallStatus("SUCCESS");
exchange.getIn().setBody(stubResponse, WOutputAccnLayout.class);
})
.log("Test response object created: ${body}")
.end();
}
}
そして、私は次のテストを持っています:
PerfTestRouteBuilderIT
public class PerfTestRouteBuilderIT extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
return new PerfTestRouteBuilder();
}
@Before
public void setup() throws Exception {
super.setUp();
}
@Test
public void test_configure_exchangeSentToTestRoute_stubResponseAddedToBody() throws Exception {
startCamelContext();
NotifyBuilder notify = new NotifyBuilder(context)
.from("direct:test-input")
.whenAnyDoneMatches(body().isEqualTo(getStubResponse()))
.create();
template.sendBody("direct:test-input", "");
assertThat(notify.matches(5, TimeUnit.SECONDS), is(true));
stopCamelContext();
}
private WOutputAccnLayout getStubResponse() {
WOutputAccnLayout stubResponse = new WOutputAccnLayout();
stubResponse.setWOutAccnAccNum("AB999999999");
stubResponse.setWOutAccnCallStatus("SUCCESS");
return stubResponse;
}
}
条件が常にfalseと評価してgetStubResponse方法を考慮すると、まさにそれがルートになるように設定オブジェクトを返します。なぜ、私は表示されません。前回の解決策は、template.sendBodyを使用するか、ルートエンドポイント経由で交換を作成し、それを使用することでした。それは私がラクダテストキットをどのように使用しているかの周りに何かありますか?
に使用されるオブジェクトのためのダウン.equals実装にあったように、それは多分WOutputAccnLayoutオブジェクトの.equals()の実装ですか? – ltsallas
良い点は、それに見える – jbailie1991
うん、体とスタブの応答でassertEqualsを試して、どのように.equalsが実装されているために失敗しました。残念なことに、生成されたクラスなので、equalsの実装を変更することはできませんが、少なくとも私はそのnotifybuilder – jbailie1991