我们有一个Mule应用程序,其中有6个或7个流,每个流有大约5个组件。这是设置。我们将JMS请求发送到ActiveMQ队列。ule子听了。根据消息的内容,我们将其转发到相应的流。
<flow name="MyAPPAutomationFlow" doc:name="MyAPPAutomationFlow">
<composite-source>
<jms:inbound-endpoint queue="MyAPPOrderQ" connector-ref="Active_MQ_1" doc:name="AMQ1 Inbound Endpoint"/>
<jms:inbound-endpoint queue="MyAPPOrderQ" connector-ref="Active_MQ_2" doc:name="AMQ2 Inbound Endpoint"/>
</composite-source>
<choice doc:name="Choice">
<when expression="payload.getProcessOrder().getOrderType().toString().equals("ANC")" evaluator="groovy">
<processor-chain>
<flow-ref name="ProcessOneFLow" doc:name="Go to ProcessOneFLow"/>
</processor-chain>
</when>
<when....
...........
</choice>
</flow>
<flow name="ProcessOneFLow" doc:name="ProcessOneFLow">
<vm:inbound-endpoint exchange-pattern="one-way" path="ProcessOneFLow" responseTimeout="10000" mimeType="text/xml" doc:name="New Process Order"/>
<component doc:name="Create A">
<spring-object bean="createA"/>
</component>
<component doc:name="Create B">
<spring-object bean="createB"/>
</component>
<component doc:name="Create C">
<spring-object bean="createC"/>
</component>
<component doc:name="Create D">
<spring-object bean="createD"/>
</component>
</flow>
<spring:beans>
<spring:import resource="classpath:spring/service.xml"/>
<spring:bean id="createA" name="createA" class="my.app.components.CreateAService"/>
<spring:bean id="createB" name="createB" class="my.app.components.CreateBService"/>
<spring:bean id="createC" name="createC" class="my.app.components.CreateCService"/>
<spring:bean id="createD" name="createD" class="my.app.components.CreateDService"/>
......
......
</spring:beans>
Run Code Online (Sandbox Code Playgroud)
现在,我不确定如何用它们编写功能测试。
我浏览了Mule网站上的功能测试文档,但是那里有非常简单的测试。
功能测试是否不应该使用DAO或服务层进行实际的后端更新,还是只是在模拟服务层的单元测试的扩展?
我的想法是-它可以接受请求,并使用内存Mule服务器将请求响应从一个组件传递到另一个组件流。还请注意,我们的任何流都没有Outbound端点,因为它们主要是Fire和Forget类型的流,状态更新由组件执行的DB更新管理。
另外,为什么我需要为测试创建单独的Mule配置xml文件?如果我没有测试实际将在Live上部署的流xml,那么此测试的意义是什么?如果要为测试创建单独的xml配置,这对于我来说有点不利。...一些专家能否请您进一步说明一下,并指出与我们所使用的测试类似的示例测试。
PS:Mule中的组件依赖于外部系统,例如Web服务,数据库等。对于功能测试,我们需要运行这些程序还是应该模拟出那些服务/ Db Access?
对 Mule 应用程序进行功能测试与测试任何依赖于外部资源(例如数据库或 JMS 代理)的应用程序没有什么不同,因此您需要使用与标准应用程序相同的技术。
通常,这意味着使用内存中的实现来清除资源,例如用于数据库的 HSQLDB 或用于 JMS 的瞬态 ActiveMQ 内存代理。对于 Mule 应用程序,这意味着模块化您的配置,以便在单独的文件中定义“实时”传输,您可以在测试时将其替换为包含内存中变体的文件。
为了验证 Mule 与资源的交互是否正确,您可以使用其 Java 客户端(例如 JDBC 或 JMS)直接读取资源,如果您想确保纯粹的非 Mule 客户端在读取 Mule 内容时没有问题,那么这会很好。已调度,或使用 MuleClient 从这些资源中读取或创建消耗这些资源并将消息传递到<test:component>.
仅供参考,这些不同的技术在《Mule in Action》第二版第 12 章中进行了解释和演示。
| 归档时间: |
|
| 查看次数: |
3635 次 |
| 最近记录: |