モックを使用したデータ アクションのテスト
この記事では、モック データを使用してデータ アクションをテストする方法について説明します。
Microsoft Dynamics 365 Commerce でデータ アクションをモックすることで、データ アクションの出力を、読み込まれた actionmock.json ファイルに指定されているデータに置き換えることができます。 アクションモックは、アクションを呼び出さずにモジュールをテストする場合に役立ちます。 .env ファイルで Commerce サーバー (MSDyn365Commerce_BASEURL プロパティ) を構成していない場合は、このアプローチを使用する必要があります。 .env ファイルの詳細については、開発環境 (.env) ファイルの構成を参照してください。
アクション モックの構造
データ アクション モックを作成するには、モジュールの /src/module/<MODULE_NAME>/mocks/ ディレクトリの下に新しいファイルを作成します。 次の例のように、新しいファイルの名前は <MODULE_MOCK_NAME>.actionmock.json の形式になるはずです。
/src/modules/product-feature/mocks/myModuleMock.actionmock.json
ファイルの作成後、データ アクションで定義された CacheObjectType および CacheKey 値を指定することで、ファイル内のデータ アクションの戻りオブジェクトをシミュレートできます。 CacheKey 値を "*" に設定して、任意のキャッシュ キーを受け入れることができます。 詳細については、「データ アクション」を参照してください。
次の例では、<MODULE_MOCK_NAME>.actionmock.json ファイルの構造方法を示します。
{
"CacheObjectType": "MyCacheObjectType",
"CacheKey": "MyCacheKey",
"Mock": {
"foo": "bar"
}
}
CacheKey 値が指定されていない場合、または "*" が指定されている場合、対応する CacheObjectType 値を持つすべてのアクションがモック出力を受け取ります。
例
次の例では、データ アクションを使用するモジュール定義ファイルと、製品データを返す対応するデータ アクションを示します。
モジュール定義ファイルの例:
{
"$type": "contentModule",
"friendlyName": "Product Feature",
"name": "product-feature",
"description": "Feature module used to highlight a product.",
"categories": [
"storytelling"
],
"tags": [
""
],
"dataActions": {
"products": {
"path": "@msdyn365-commerce-modules/retail-actions/dist/lib/get-simple-products",
"runOn": "server"
}
},
"config": {
"imageAlignment": {
"friendlyName": "Image Alignment",
"description": "Sets the desired alignment of the image, either left or right on the text.",
"type": "string",
"enum": {
"left": "Left",
"right": "Right"
},
"default": "left",
"scope": "module",
"group": "Layout Properties"
}
},
"resources": {
"resourceKey": {
"comment": "resource description",
"value": "resource value"
}
}
}
モジュール モック ファイルの例:
[
{
"CacheObjectType": "SimpleProduct",
"CacheKey": "*",
"Mock": {
"RecordId": 22565423455,
"ItemId": "2101",
"Name": "Retro Horn-Rimmed Keyhole Sunglasses",
"Description": "High-quality with the perfect blend of timeless classic and modern technology with hint of old school glamor.",
"ProductTypeValue": 3,
"DefaultUnitOfMeasure": "Ea",
"BasePrice": 15,
"Price": 15,
"AdjustedPrice": 14,
"MasterProductId": null,
"Components": null,
"Dimensions": null,
"Behavior": null,
"LinkedProducts": null,
"PrimaryImageUrl": "https://bit.ly/33cMGxr",
"ExtensionProperties": null
}
}
]
メモ
CacheObjectType および CacheKey 値は、モックするデータ アクションの値と一致する必要があります。 CacheKey 値が指定されていない場合、対応する CacheObjectType 値を持つすべてのアクションがモック出力を受け取ります。
アクション モックをプレビューで使用する
モジュール プレビューでアクション モックを使用するには、次の例に示すように、アクション モック actionMock=MODULE_NAME:MOCK_FILE_NAME のクエリ文字列パラメータを含めます。
https://localhost:4000/modules?type=product-feature&actionMock=product-feature:myModuleMock
クエリ文字列パラメーターの構文を次に示します。
{module-name}:{action-mock-file-name}
アクション モックのファイル名が指定されていない場合は、パッケージ名を使用してそのモックを検索します。