2014-09-26 69 views
2

我有幾個途徑與日誌URI如設置模擬終點在Apache的駱駝與日誌:*

<route> 
    <from uri="someUri" /> 
    <to uri="someProcessor" /> 
    <to uri="log:SOME_LOG?level=INFO" /> 
</route> 

我使用CamelSpringJUnit4ClassRunner運行我的單元測試結束。

我希望能夠將我的日誌端點模擬爲MockEndpoint對象。我曾嘗試使用

@MockEndpoints("log:*")

end = MockEndpoint.resolve(camelContext, "log:SOME_LOG?level=INFO"); 

沿而是產生一個ClassCastException不能施放InterceptSendToEndpoint到MockEndpoint。

和還試圖

@EndpointInject(uri="log:SOME_LOG?level=INFO") 
MockEndpoint end; 

但也產生一個IllegalArgumentException。

Invalid type: org.apache.camel.component.mock.MockEndpoint which cannot be 
injected via @EndpointInject/@Produce for: Endpoint[log:SOME_LOG?level=INFO] 

一種解決方法,我發現是在前面加上我的日誌URI以「模擬」和使用

@EndpointInject(uri="mock:log:SOME_LOG?level=INFO)和定義我的路線XML與

<route> 
    <from uri="someUri" /> 
    <to uri="someProcessor" /> 
    <to uri="mock:log:SOME_LOG?level=INFO" /> 
</route> 

不過,我想通過模擬我的日誌:uris而不必在camel.xml中修改我的路由定義。

有什麼,我失蹤?

回答

2

當您使用@MockEndpoints("log:*")時,駱駝只爲您創建模擬端點,模擬端點URI應爲mock:log:THE_REMAINED。你應該能夠得到與下面的代碼模擬端點:

end = MockEndpoint.resolve(camelContext, "mock:log:SOME_LOG?level=INFO"); 
+0

你是說他的配置應該是'<到URI =「日誌:SOME_LOG」 />',註釋仍然'@MockEnpoints(「日誌: *「)'但是他需要用'end = MockEndpoint.resolve(camelContext,」mock:log:SOME_LOG?level = INFO「)來初始化? – Snekse 2015-05-13 19:16:23

+1

是的,你是對的。 – 2015-05-15 03:57:21