87.12. 使用 XML DSL 模拟现有端点
如果您没有将 camel-test 组件用于单元测试(如上所示),您可以在使用 XML 文件进行路由时使用不同的方法。
解决方法是创建一个由单元测试使用的新 XML 文件,然后包括具有您要测试的路由的预期 XML 文件。
假设我们在 camel-route.xml 文件中有路由:
camel-route.xml
然后,我们按如下方式创建新的 XML 文件,其中包括 camel-route.xml 文件,并定义一个带有类 org.apache.camel.impl.InterceptSendToMockEndpointStrategy 的 spring bean,该文件告知 Camel 模拟所有端点:
test-camel-route.xml
<!-- the Camel route is defined in another XML file -->
<import resource="camel-route.xml"/>
<!-- bean which enables mocking all endpoints -->
<bean id="mockAllEndpoints" class="org.apache.camel.component.mock.InterceptSendToMockEndpointStrategy"/>
<!-- the Camel route is defined in another XML file -->
<import resource="camel-route.xml"/>
<!-- bean which enables mocking all endpoints -->
<bean id="mockAllEndpoints" class="org.apache.camel.component.mock.InterceptSendToMockEndpointStrategy"/>
然后,在单元测试中,您将加载新的 XML 文件(test-camel-route.xml)而不是 camel-route.xml。
要只模拟所有日志端点,您可以在 bean 的构造器中定义模式: https://access.redhat.com/documentation/zh-cn/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-log-component-starter
<bean id="mockAllEndpoints" class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy">
<constructor-arg index="0" value="log*"/>
</bean>
<bean id="mockAllEndpoints" class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy">
<constructor-arg index="0" value="log*"/>
</bean>