2017-10-17 5 views
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を使用するか、ルートエンドポイント経由で交換を作成し、それを使用することでした。それは私がラクダテストキットをどのように使用しているかの周りに何かありますか?

+2

に使用されるオブジェクトのためのダウン.equals実装にあったように、それは多分WOutputAccnLayoutオブジェクトの.equals()の実装ですか? – ltsallas

+0

良い点は、それに見える – jbailie1991

+0

うん、体とスタブの応答でassertEqualsを試して、どのように.equalsが実装されているために失敗しました。残念なことに、生成されたクラスなので、equalsの実装を変更することはできませんが、少なくとも私はそのnotifybuilder – jbailie1991

答えて

0

Itsallas'はコメントごとに、問題がアサーション