フローごとに約 5 つのコンポーネントを持つ 6 つまたは 7 つのフローを持つ Mule アプリケーションがあります。これがセットアップです。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 の Web サイトで Functional Testing のドキュメントを調べましたが、非常に単純なテストがあります。
機能テストは、DAO またはサービス レイヤーを使用して実際のバックエンドの更新を行うことは想定されていませんか、それともサービス レイヤーをモックアップする単体テストの拡張にすぎませんか?
私はアイデアを思いつきました-リクエストを受け取り、インメモリMuleサーバーを使用して、フロー内の1つのコンポーネントから別のコンポーネントにリクエスト-レスポンスを渡すことができます。また、フローのほとんどは Fire and Forget タイプのフローであり、ステータスの更新はコンポーネントが行う DB の更新によって管理されるため、どのフローにもアウトバウンド エンドポイントがないことに注意してください。
また、なぜテスト用に個別の Mule 構成 xml ファイルを作成する必要があるのですか? 実際に Live にデプロイされるフロー xml をテストしていない場合、このテストのポイントは何ですか? テストのためだけに個別のxml構成を作成しているため、目的が多少損なわれます...専門家がもう少し詳しく説明し、使用しているものと同様のテスト例を指摘してください。
PS: Mule 内のコンポーネントは、Web サービスやデータベースなどの外部システムに依存しています。機能テストでは、それらを実行する必要がありますか?それとも、これらのサービス/Db アクセスをモックアウトする必要がありますか?