2016-06-02 14 views
-2

私は外部チェックのサービスの応答に基づいて交換プロパティが正しく設定されているかどうかを確認するために、しかし、外からのサービスが呼び出された後、私は元の取引所にアクセスすることができないので、コール後に私はこのプロパティを得ることができます。外部モックされたサービスを呼び出した後、キャメルにAssert交換プロパティを設定しました

public class OutputTest extends CamelBlueprintTestSupport { 

@Override 
protected String getBlueprintDescriptor() { 
    return "/OSGI-INF/blueprint/blueprint-camel.xml,/OSGI-INF/blueprint/blueprint-beans.xml"; 
} 

@Override 
public boolean isUseAdviceWith() { 
    return true; 
} 

@Override 
public String isMockEndpointsAndSkip() { 
    return "wmq:.*|jetty:.*"; 
} 
@Test 
public void testCallAndPropertyIsSet() throws Exception { 
    getMockEndpoint("mock:jetty:http:localhost").expectedBodiesReceived(context.getTypeConverter().convertTo(String.class, new File("src/test/resources/requests/Request.xml"))); 
    getMockEndpoint("mock:jetty:http:localhost").returnReplyBody(new Expression() { 
     @Override 
     public <T> T evaluate(Exchange exchange, Class<T> aClass) { 
      return context.getTypeConverter().convertTo(aClass, new File("src/test/resources/requests/Response.xml")); 
     } 
    }); 
    template.sendBody("direct:route1", context.getTypeConverter().convertTo(String.class, new File("src/test/resources/requests/ValidRequest.xml"))); 
    getMockEndpoint("mock:jetty:http:localhost").expectedBodiesReceived(); 
    //How to assert exchange property 'Property1' has been set? 
} 

青写真ラクダルート:

<route id="rav"> 
     <from uri="direct:route1"/> 
     <to uri="velocity:templates/RequestTemplate.vm"/> 
     <to uri="jetty:{{integration.service.service1}}?bridgeEndpoint=true"/> 
     <setProperty propertyName="Property1"> 
      <xpath resultType="java.lang.String">/soapenv:Envelope/soapenv:Body/namespace:element/text()</xpath> 
     </setProperty> 
    </route> 

答えて

0

これを行うためのさまざまな方法があります。あなたはMockEndpointを使ってそこから交換をしようとすることができます。別の方法は、

 Exchange exchange = template.send("uri", new new Processor() { 
      public void process(Exchange exchange) throws Exception { 
      exchange.getIn().setBody(""); 
      } 
     }); 

    Message resp = exchange.getIn(); 
    assertEquals("someproperty", resp.getProperty("propertyName"); 
です。
関連する問題