2014-09-26 1 views
2

나는 내 단위 테스트를 실행하는 데 CamelSpringJUnit4ClassRunner을 사용하고 같은로그와 아파치 낙타에 모의 엔드 포인트 설정 : *

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

으로 로그 URI로 끝나는 여러 경로를 가지고있다.

내 로그 끝점을 MockEndpoint 개체로 조롱 할 수 있기를 원합니다. 나는

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

와 함께

@MockEndpoints("log:*")

를 사용하려고했지만 그는 ClassCastException가 MockEndpoint에 InterceptSendToEndpoint 캐스팅 수 없습니다 생성합니다.

와도

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

을 시도했지만 그 또한 IllegalArgumentException을 생성합니다. "모의"와

@EndpointInject(uri="mock:log:SOME_LOG?level=INFO)을 사용하고 내가 싶습니다 그러나

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

와 XML로 내 경로를 정의

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

내가 찾은 해결 방법은 내 로그 URI를 앞에 붙이는 것입니다 내 log : uris를 조롱하고 camel.xml에서 내 경로 정의를 수정하지 않아도 작동하도록하십시오.

내가 무엇을 누락 되었습니까?

답변

2

@MockEndpoints("log:*")을 사용하면 낙타가 모의 종말점을 만들고 모의 종말점 URI는 mock:log:THE_REMAINED이어야합니다.

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

당신이 '자신의 설정이 있어야 할 건가요 : 아래 코드를 사용하여 모의 엔드 포인트를 얻을 수 있어야합니다 ', 주석이 @MockEnpoints는 ("로그'남아있다 : * ")'하지만 그는 end = MockEndpoint.resolve (camelContext,"mock : log : SOME_LOG? level = INFO ")'로 초기화해야합니까? – Snekse

+1

그래, 네 말이 맞아. –