骆驼测试:如何访问路由中设置的标题

jef*_*ter 3 unit-testing apache-camel

我有一个骆驼单元测试,我想访问在路由的第一点在Exchange上设置的标头值。

路线示例...

<route id="VCM001_incoming">
            <from uri="file:{{InLocation}}" />
            <convertBodyTo type="java.lang.String"/>
            <setHeader headerName="FileNameWithoutExtension">
               <simple>${file:onlyname.noext}</simple>
            </setHeader>
            <to uri="direct:splitFile" />
        </route>
Run Code Online (Sandbox Code Playgroud)

使用过的Java代码...

 public List<String> createList(Exchange exchange) {
        String fileName = (String) exchange.getIn().getHeader("FileNameWithoutExtension");
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。

现在在我的测试中,我想找出什么标题值为“ FileNameWithoutExtension”。

  @Produce(uri = "file:{{InLocation}}")
  private ProducerTemplate inputEndpoint;  

  @EndpointInject(uri = "mock:output1")
  private MockEndpoint outputEndpointRPR;  

 @Test
  public void testCamelRoute() throws Exception 
  { 
    context.addRoutes(new RouteBuilder() {
      @Override
      public void configure() throws Exception {
        from("file:{{OutLocation}}").to(outputEndpoint);
      }

    inputEndpoint.sendBody("test-message");

    Object[] expectedBodies = new Object[]{"Success: filename=xxx"};
    // At this point I need the header 'FileNameWithoutExtension' to setup the correct 'expectedBodies'

    outputEndpoint.expectedBodiesReceivedInAnyOrder(expectedBodies);

    assertMockEndpointsSatisfied();   

  }
Run Code Online (Sandbox Code Playgroud)

mor*_*jvr 5

知道这已经很晚了,对于骆驼2.15.2,您可以使用以下代码

outputEndpoint.expectedHeaderReceived("header", "value");
Run Code Online (Sandbox Code Playgroud)