【发布时间】:2012-11-16 14:15:47
【问题描述】:
我们有一个 Mule 应用程序,它有 6 个或 7 个流,每个流大约有 5 个组件。 这是设置。 我们将 JMS 请求发送到 ActiveMQ 队列。骡听着。根据消息的内容,我们将其转发到相应的流。
<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>
现在我不确定如何使用它们编写功能测试。
我浏览了 Mule 网站上的功能测试文档,但那里的测试非常简单。
功能测试不应该使用 DAO 或服务层进行实际的后端更新,还是它只是您模拟服务层的单元测试的扩展?
我的想法是——它可以接收一个请求并使用内存中的 Mule 服务器将请求-响应从一个组件传递到另一个组件。 另请注意,我们的任何流都没有出站端点,因为它们大多是 Fire 和 Forget 类型的流,状态更新由组件执行的数据库更新管理。
另外,为什么我需要为测试创建单独的 mule config xml 文件?如果我没有测试将实际部署在 Live 上的流 xml,那么这个测试的意义何在?如果我只是为测试创建单独的 xml 配置,这在某种程度上违背了我的目的...... 能否请一些专家解释一下,并指出与我们正在使用的测试类似的示例测试。
PS:Mule 内部的组件依赖于外部系统,如 web 服务、数据库等。对于功能测试,我们是否需要运行这些组件,还是应该模拟这些服务/数据库访问?
【问题讨论】:
-
在回复这个之前,你对这个答案stackoverflow.com/a/13609415/387927有什么看法?
-
嗨,大卫。感谢您对该主题的回答。
-
嗨,大卫。如果您能在此线程中回答问题.. 期待您的解释