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

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

Was this article helpful?

💙 Thanks for your feedback!