У нас есть приложение Mule с 6 или семью потоками с примерно 5 компонентами на поток. Вот настройка. Мы отправляем запросы JMS в очередь ActiveMQ. Мул слушает это. Основываясь на содержании сообщения, мы направляем его соответствующим потокам.Mule Функциональные тесты - полностью смущены
<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 inmemory для передачи запроса-ответа от одного компонента к другому в потоке. Также обратите внимание, что конечная точка исходящего трафика для любого из наших потоков отсутствует, поскольку в основном потоки потоков Fire и Forget и обновления состояния управляются обновлениями БД, которые выполняют компоненты.
Также почему мне нужно создавать отдельные файлы xml-файлов mule для тестов? Если я не тестирую поток xml, который будет фактически развернут на Live, в чем смысл этого тестирования? Я создаю отдельные xml-конфиги только для тестов, которые несколько поражают цель для меня ... Может ли какой-нибудь эксперт любезно разъяснить немного больше и указать на примеры тестов, аналогичные тем, которые мы используем.
PS: компоненты внутри Mule зависят от внешних систем, таких как веб-службы, базы данных и т. Д. Для функциональных тестов нам нужно иметь эти запущенные или мы должны издеваться над этими сервисами/Db Access?
Прежде чем ответить на этот вопрос, что вы думаете об этом ответе http://stackoverflow.com/a/13609415/387927? –
Привет, Дэвид. Спасибо за ответ на эту тему. – Soumya
Привет, Дэвид. если бы вы могли ответить на вопрос в этой теме .. с нетерпением жду вашего объяснения – Soumya