Flex Gateway新着情報
Governance新着情報
Monitoring API Managerテストスイートが肥大化し複雑になり始めたら、テストコードの一部をコードを「外部化」するのが良いでしょう。外部化により、コードを見やすく整理できるだけではなく、テストをモッキングするのに必要なファイルを再利用できます。
Mule 3 では、getResourceAsString()
関数を使用して外部 (モック) リソースをテストに組み込んでいます。Mule 4 では、DataWeave スクリプトを作成するか、または DataWeave モジュールで変数を使用することで、テストコードをモッキングできます。
モッキングするデータを返す DataWeave ファイルを作成し、src/test/resources
フォルダーに保存してから、テストで DataWeave の関数を使用してこのファイルを読み込みます。
たとえば、src/test/resources/sample_data
フォルダーに mockPost.dwl
というファイルを次のコンテンツで作成してあるとします。
%dw 2.0
output application/json
---
{
"foo" : "var"
}
この DataWeave ファイル (mockPost.dwl
) は、http:request
要求で返されるモックペイロードを作成するサンプルです。
mock-when
で then-return
セクションを設定する場合には、readUrl
関数を使用してマッピングファイルを読み込みます。
<munit-tools:then-return>
<munit-tools:payload value="#[readUrl('classpath://sample_data/mockPost.dwl')]" mediaType="application/json" encoding="UTF-8" />
</munit-tools:then-return>
classpath-based
URL では、classpath:
プロトコルプレフィックスを使用して src/test/resources
で定義されているファイルを探します。
DataWeave 変数を使用してデータを宣言することで、モックデータを単一のファイルにまとめた DataWeave モジュールを作成できます。
たとえば、src/test/resources
フォルダーに TestData.dwl
ファイルを作成することでカスタム DataWeave モジュールを作成し、異なるモックデータを (ファイルから、またはインラインで) 参照する変数を追加します。
import getResourceAsString from MunitTools
var mockPost = readUrl('classpath://sample_data/mockPost.dwl')
var foo = "N123"
var jsonFromFile = read(getResourceAsString('sample_data/mydata.json'), 'application/json')
var jsonObject = { paymentID: "1B56925769601335TLQMIWVY" }
その後、自分のモジュールで変数をインポートすることによって DataWeave モジュールで定義されている変数にアクセスできます。
<munit-tools:then-return >
<munit-tools:variables>
<munit-tools:variable key="ticket" value="#[import TestData output application/json --- TestData::mockPost]" mediaType="application/json" />
</munit-tools:variables>
</munit-tools:then-return>