ドメインベースのアプリケーションのテスト

MUnit 2.x では、追加の設定を実行せずに、Mule ドメインとリソースを共有する Mule アプリケーション用の MUnit テストスイートを作成できます。このしくみを理解するには、実際の値が入力された特定のシナリオを考慮し、そのテストの作成方法が示された手順でそれらの値を使用すると役立ちます。

テストするドメインベースの Mule アプリケーション例

domain-config​ という Mule ドメインについて考えます。このドメインは、その内部のすべての Mule アプリケーションの HTTP リスナーのグローバル設定を定義します。

Studio ビジュアルエディター
domain munit example
XML エディター
Mule ドメイン
<domain:mule-domain ...>

<http:listener-config name="HTTP_Listener_config_domain" basePath="/" >
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>


</domain:mule-domain>
Mule ドメイン pom.xml ファイル
<groupId>com.mycompany</groupId>
<artifactId>domain-config</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>mule-domain</packaging>
<name>domain-config</name>

ping されているパスを返す基本的な Mule アプリケーションについても考えます。

Studio ビジュアルエディター
mule app domain listener

このアプリケーションは HTTP リスナーグローバル設定をその Mule ドメイン (​HTTP_Listener_config_domain​) から継承するため、HTTP リスナーグローバル設定は定義しません。

mule app domain set payload
XML エディター
<mule ...>

  <flow name="application-aFlow">
        <http:listener  config-ref="HTTP_Listener_config_domain" path="/api"/>
        <set-payload value='#["You reached " ++ message.attributes.listenerPath]'/>
  </flow>

</mule>

このアプリケーションは ​http:listener-config​ グローバル要素をその Mule ドメイン (​HTTP_Listener_config_domain​) から継承するため、グローバル要素は定義しません。アプリケーションはその ​pom.xml​ ファイル内でドメインの連動関係を宣言します。

<dependencies>
...
  <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>domain-config</artifactId>
    <version>1.0.0</version>
    <classifier>mule-domain</classifier>
    <scope>provided</scope>
  </dependency>
...
</dependencies>

ドメインベースのアプリケーション例の MUnit テストの作成

Mule ドメインは Mule アプリケーションと連動関係にあるため、MUnit は Mule ドメインを起動して、テスト対象のアプリケーションに必要なグローバル要素設定を取得できます。

ping されているパスが実際に期待される ​/api​ パスであることを検証する MUnit テストを考えてみます。

Studio ビジュアルエディター
munit domain sample
  1. execution​ スコープ内で、HTTP リクエスターが ​GET​ 要求をアプリケーションのエンドポイントに送信します。

  2. validation​ スコープ内で、予想される応答に対する ​execution​ スコープからの応答をアサートする Assert Equals プロセッサーをセットアップします。

  3. 応答を予想されるテキストと比較するには、ペイロードをプレーンテキストに変換する必要があります。

XML エディター
<mule ...>

  <munit:config name="application-a-test-suite.xml" />

  <http:request-config name="HTTP_Request_configuration" basePath="/api">
    <http:request-connection host="0.0.0.0" port="8081" />
  </http:request-config>

  <munit:test name="application-a-test-suite-application-aFlowTest" description="Test to validate the path being called">

  <munit:enable-flow-sources >
    <munit:enable-flow-source value="application-aFlow" />
  </munit:enable-flow-sources>

  <munit:execution>
    <http:request config-ref="HTTP_Request_configuration" method="GET"/> (1)
  </munit:execution>

  <munit:validation>
    <munit-tools:assert-equals (2)
        actual="#[output text/plain --- payload]" (3)
        expected='#["You reached /api"]'/>
  </munit:validation>

</munit:test>
  1. execution​ スコープ内で、HTTP リクエスターが ​GET​ 要求をアプリケーションのエンドポイントに送信します。

  2. validation​ スコープ内で、予想される応答に対する ​execution​ スコープからの応答をアサートする ​assert-equals​ プロセッサーをセットアップすることにします。

  3. 応答を予想されるテキストと比較するには、ペイロードをプレーンテキストに変換する必要があります。