2013-01-15 22 views
8

के साथ ऊंट परीक्षण में एक मार्ग कैसे शुरू करें I Camel से शुरू हो रहा हूं और मुझे परीक्षण लिखने में कुछ समस्याएं आ रही हैं। मेरा उपयोग मामला बिल्कुल cfx proxy example जैसा ही है। सिवाय इसके कि मुझे "RealWebservice" की आवश्यकता नहीं है। अब मैं एक इकाई परीक्षण (नहीं एक एकीकरण परीक्षण उदाहरण के साथ शामिल के रूप में) लिखने के लिए, एनोटेशन दृष्टिकोण का उपयोग कर कोशिश कर रहा हूँ:नकली एंडपॉइंट्स

@RunWith(CamelSpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:application-context.xml" }) 
@MockEndpointsAndSkip 
public class RoutesTest { 

@Autowired 
CamelContext camelContext; 

@EndpointInject(uri = "mock:cxf:bean:cxfEndpoint", context = "camelContext") 
MockEndpoint cxfEndpoint; 

@EndpointInject(uri = "mock:log:input", context = "camelContext") 
MockEndpoint logInputEndpoint; 

@EndpointInject(uri = "mock:http:realhostname:8211/service", context = "camelContext") 
MockEndpoint realEndpoint; 

@EndpointInject(uri = "mock:cxf:bean:cxfEndpoint") 
ProducerTemplate producer; 

@Test 
public void testLeleuxMifidRoute() throws InterruptedException { 
    String body = "<blah/>"; 

    cxfEndpoint.expectedBodiesReceived(body); 
    logInputEndpoint.expectedBodiesReceived(body); 
    realEndpoint.expectedBodiesReceived(body); 

    producer.sendBody(body); 

    MockEndpoint.assertIsSatisfied(camelContext); 
} 
} 

cxfEndpoint संदेश प्राप्त करता है लेकिन अन्य अंतिमबिंदुओं नहीं है।

मार्ग लगता है कि यह (यह काम करता है जब मैं इसे चलाने के लिए और SoapUI के साथ एक संदेश भेजने के लिए, स्पष्ट रूप से मैं आईपीएस और beannames इस उदाहरण में अस्पष्ट):

<endpoint id="callRealWebService" uri="http://realhostname:8211/service?throwExceptionOnFailure=true" /> 
<route> 
    <from uri="cxf:bean:cxfEndpoint?dataFormat=MESSAGE"/> 
    <to uri="log:input?showStreams=true"/> 
    <to ref="callRealWebService"/> 
    <to uri="log:output"/> 
</route> 

क्या मैं गलत कर रहा हूँ? मुझे मिले सभी उदाहरण और अन्य प्रश्न "प्रत्यक्ष: प्रारंभ" या उत्पादन मार्ग को बदलने के लिए प्रतीत होते हैं।

उत्तर

4

सफलता के साथ उपयोग किए जाने वाले एक दृष्टिकोण में परीक्षण निष्पादन और मुख्य कोड के लिए अलग-अलग गुण फ़ाइलें हैं।

हम परिभाषित करते हैं, ऊंट-प्रसंग के अंदर, संपत्ति

<propertyPlaceholder id="properties" 
      location="classpath:META-INF/uri.properties" xmlns="http://camel.apache.org/schema/spring" /> 

फ़ोल्डर /src/main/resources/META-INF/ में हम मुख्य कोड और /src/test/resources/META-INF/ हम परीक्षण के निष्पादन के लिए uri.properties है के लिए uri.properties फ़ाइल है।

आपका मार्ग मुख्य uri.properties

cxf.bean.cxfEndpoint=cxf:bean:cxfEndpoint?dataFormat=MESSAGE 

परीक्षण uri.properties हो जाएगा अंकन {{properties.name}}

<route> 
    <from uri="{{cxf.bean.cxfEndpoint}}"/> 
</route> 

का उपयोग कर वास्तविक uri मान के स्थान पर संपत्ति प्लेसहोल्डर का उपयोग कर फिर से लिखा जा रहा है, है

cxf.bean.cxfEndpoint=direct:start 

इस कॉन्फ़िगरेशन का उपयोग करना n, आप आसानी से अपने मार्ग का परीक्षण करने में सक्षम होंगे।

संबंधित मुद्दे