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();
,測試仍然失敗
非常好,第一次工作。在NotifyBuilder中使用默認交換是否存在某種問題? – jbailie1991
它的評論在這裏https://github.com/apache/camel/blob/5cdc8ae7e28113f127dfe637460fd4a047623463/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java#L191 – ltsallas