データベース

データベースサーバに接続するコードをテストするには、ローカル環境にデータベースサーバをインストールしてテストを実行する必要があります。また、テスト専用の外部データベースサーバを使用することもできますが、Maven プロジェクトは移植できません。サードパーティがテストデータベースサーバをインストールしてプロジェクトをコンパイルする必要があります。

データベース接続を容易にテストできるように、MUnit ではローカル環境にデータベースサーバを実装できます。

MUnit DB Server Module のインストール

  1. Anypoint Studio から、​[Mule Palette (Mule パレット)]​、​[Search in Exchange…​ (Exchange 内を検索…​)]​ の順に移動します。

  2. 検索バーで​「MUnit Utils Database Server」​ (MUnit ユーティリティデータベースサーバ) を検索し、そのモジュールをプロジェクトに追加します。

    <!-- dbserver Dependency -->
    <dependency>
        <groupId>com.mulesoft.munit.utils</groupId>
        <artifactId>munit-dbserver-module</artifactId>
        <version>2.0.2</version>
        <classifier>mule-plugin</classifier>
        <scope>test</scope>
    </dependency>

    pom​ ファイル内の MUnit DB サーバアーティファクトには ​test​ スコープが必要です。

  3. データベースに使用される ​h2​ 連動関係は共有ライブラリ。
    pom.xml​ ファイルに連動関係を追加し、​mule-maven-plugin​ で ​sharedLibrary​ としてリストする必要があります。

    <!--Third party libs-->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.3.166</version>
    </dependency>
    <plugin>
        <groupId>org.mule.tools.maven</groupId>
        <artifactId>mule-maven-plugin</artifactId>
        <version>${mule.maven.plugin.version}</version>
        <extensions>true</extensions>
        <configuration>
        <sharedLibraries>
                ...
                <sharedLibrary>
                    <groupId>com.h2database</groupId>
                    <artifactId>h2</artifactId>
                </sharedLibrary>
            </sharedLibraries>
        </configuration>
    </plugin>

属性リファレンス

属性名 説明

name

この DB サーバの設定名を定義します。この値は一意である必要があります。

database

メモリ内 DB の名前を定義します。

sqlFile

DB 構造/コンテンツを定義する SQL ファイルへのパスを指定します。このパラメータは、起動時に DB を作成するために使用されます。詳細は、​「SQL ファイルからの DB 構造の定義」​セクションを参照してください。

csv

DB 構造/コンテンツの定義に使用されるカンマ区切りファイルのパスを指定します。このパラメータは、起動時に DB を作成するために使用されます。詳細は、​「CSV ファイルからの DB 構造の定義」​セクションを参照してください。

connectionStringParameters

データベースへの接続文字列を定義します。セミコロンでパラメータを連結できます。

DB 構造の定義

データベースの構造とコンテンツを定義するには、2 つの異なる方法があります。

  • SQL

  • CSV

MUnit DB サーバは H2 に基づきます。複雑な構造、インデックス、および結合コマンドは適切に機能しない可能性があります。

SQL ファイルからの DB 構造の定義

SQL ファイルから DB の構造とコンテンツを定義するには、有効な ANSI SQL DDL (データ定義言語) 命令のセットを指定する必要があります。

<dbserver:config name="MUnit_DB_Server_Config" >
    <dbserver:connection sqlFile="FILE_NAME.sql" database="DATABASE_NAME" connectionStringParameters="MODE=MySQL" />
</dbserver:config>

CSV ファイルからの DB 構造の定義

CSV ファイルに基づく DB 構造は次のように定義します。

  • テーブルの名前はファイルの名前 (以下の例では ​customers​)。

  • 列の名前は CSV ファイルのヘッダー。

<dbserver:config name="MUnit_DB_Server_Config" >
    <dbserver:connection csv="FILE_NAME.csv" database="DATABASE_NAME" connectionStringParameters="MODE=MySQL" />
</dbserver:config>

DB 構造を複数の CSV ファイルに分割することもできます。これを行うには、ファイル名を 1 つのリストにして、セミコロンで名前を区切ります。

<dbserver:config name="MUnit_DB_Server_Config" >
    <dbserver:connection csv="FILE_NAME.csv;FILE_NAME_1.csv" database="DATABASE_NAME" connectionStringParameters="MODE=MySQL" />
</dbserver:config>

これにより、​FILE_NAME​ と ​FILE_NAME_1​ の 2 つのテーブルが作成されます。

MUnit DB サーバプロセッサ

DB サーバユーティリティには、DB サーバとのやり取りを行うための 2 つのプロセッサがあります。

Validate-That

MUnit DB サーバでは、クエリの結果が期待どおりであることを検証できます。

これを行うには、​validate-that​ 操作を使用します。次のように、​results​ プロパティを改行文字 (​\n​) で区切られた行を含む CSV に設定します。

<dbserver:validate-that config-ref="DB_Server"
query="SELECT * FROM jobtitlelookup WHERE JOBTITLE='Developer';" returns="&quot;JOBTITLE&quot;,&quot;EECSALARYORHOURLY&quot;,&quot;JOBTITLEID&quot;\n&quot;Developer&quot;,&quot;10&quot;,&quot;DEV&quot;" />

Execute

MUnit DB サーバでは、メモリ内データベースで命令を実行できるため、テストの前にレジストリを追加または削除したり、データが適切に保存されたかどうかを確認したりできます。

execute​ 操作で DB Server Connector を使用して、テーブル (​Culinary Team Member,10,HIR​) に新しい値を挿入します。次に、​execute query​ 操作で別の DB Server Connector を使用して、テーブルからすべての値 (新しく追加された値を含む) を取得し、ペイロードを保存するためにロガーコンポーネントを使用してペイロードを確認します。

<!-- Execute a SQL instruction using the execute operation -->
<dbserver:execute config-ref="MUnit_DB_Server_Config" sql="INSERT INTO jobtitlelookup VALUES ('Culinary Team Member','10','HIR');"/>

<!-- Check the update using execute-query operation -->
<dbserver:execute-query config-ref="MUnit_DB_Server_Config" sql="SELECT * FROM jobtitlelookup"/>

<!-- log the resulting payload -->
<logger level="INFO" message="#[payload]"/>

コンソールのロガーは次のようになります。

org.mule.runtime.core.internal.processor.LoggerMessageProcessor: [{JOBTITLEID=DEV, EECSALARYORHOURLY=10, JOBTITLE=Developer}, {JOBTITLEID=HIR, EECSALARYORHOURLY=10, JOBTITLE=Culinary Team Member}]