2017-10-13 90 views
0

我有一個非常簡單的途徑:駱駝NotifyBuilder始終返回false

PerfStubRouteBuilder.java

public class PerfStubRouteBuilder extends SpringRouteBuilder { 

    /* (non-Javadoc) 
    * @see org.apache.camel.builder.RouteBuilder#configure() 
    */ 
    @Override 
    public void configure() throws Exception { 
     from("direct:test-aces-input") 
     .log("Creating test Accident Number header") 
     .setHeader("AccidentNumber", simple("AB999999999")) 
     .log("Test Accident Number header created : ${header.AccidentNumber}") 
     .end(); 
    } 
} 

,我如下測試它:

PerfStubRouteBuilderTest.java

public class PerfStubRouteBuilderTest extends CamelTestSupport { 
    @Produce(uri = "direct:test-aces-input") 
    ProducerTemplate template; 

    PerfStubRouteBuilder route = new PerfStubRouteBuilder(); 
    Exchange exch = new DefaultExchange(context); 

    @Override 
    protected RouteBuilder createRouteBuilder() { 
     return route; 
    } 

    @Test 
    public void test_PerfStubRouteBuilder_happyPath_addsAccidentNumberHeaderToExchange() throws Exception { 
     startCamelContext(); 
     NotifyBuilder notify = new NotifyBuilder(context).from("direct:test-aces-input").whenDone(1).filter(header("AccidentNumber").isEqualTo("AB999999999")).create(); 
     template.send(exch); 
     assertTrue(notify.matches(10, TimeUnit.SECONDS)); 
     stopCamelContext(); 
    } 
} 

assertTrue總是會返回爲false,所以我懷疑我沒有正確使用NotifyBuilder,儘管此時我無法確定。本質上,我想檢查交易所是否通過路線,並將實際路線中指定的頭添加到交易所。我想要發生的情況是,如果與該標題值組合的交換使其到達路線的末端,則會發生匹配,因此會出現篩選步驟。我想避免在路線末端增加一個端點,例如,通過AdviceWith給出了路線本身的小小和簡單程度,似乎有點重量級開始在模擬端點中添加這樣的小測試

UPDATE:

試圖消除從表達式過濾器部分,留下作爲NotifyBuilder NotifyBuilder notify = new NotifyBuilder(context).from("direct:test-aces-input").whenDone(1).create(); ,測試仍然失敗

回答

1

創建從端點在測試等

Endpoint endpoint = context.getEndpoint("direct:test-aces-input"); 
Exchange exchange = endpoint.createExchange(); 
template.send(exchange); 
交換

或只是直接使用sendBody

tempalte.sendBody("") 
+0

非常好,第一次工作。在NotifyBuilder中使用默認交換是否存在某種問題? – jbailie1991

+0

它的評論在這裏https://github.com/apache/camel/blob/5cdc8ae7e28113f127dfe637460fd4a047623463/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java#L191 – ltsallas