我有几条路径以日志uri结尾,例如
<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前加上“mock:”并使用
@EndpointInject(uri="mock:log:SOME_LOG?level=INFO)
并使用
<route>
<from uri="someUri" />
<to uri="someProcessor" />
<to uri="mock:log:SOME_LOG?level=INFO" />
</route>
但是我希望通过模拟我的日志来实现这一点:uris而不必修改camel.xml中的路由定义。
有什么东西我不见了吗?
答案 0 :(得分:2)
当你使用@MockEndpoints("log:*")
时,骆驼只为你创建一个模拟端点,模拟端点uri应该是mock:log:THE_REMAINED
。您应该能够使用以下代码获取模拟端点:
end = MockEndpoint.resolve(camelContext, "mock:log:SOME_LOG?level=INFO");