Camel 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给出路由本身有多么简单和简单,开始为这样一个小测试添加模拟端点似乎有点重量级

更新:

尝试从表达式中删除filter部分,将NotifyBuilder保留为NotifyBuilder notify = new NotifyBuilder(context).from("direct:test-aces-input").whenDone(1).create(); ,测试仍然失败

在测试中从端点创建交换

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

或者直接使用sendBody

 tempalte.sendBody("")