次の方法で共有


モックを使用したデータ アクションのテスト

この記事では、モック データを使用してデータ アクションをテストする方法について説明します。

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}

アクション モックのファイル名が指定されていない場合は、パッケージ名を使用してそのモックを検索します。

追加リソース

データ アクションの概要

データ アクション キャッシュのオプション

ページ読み込みデータ アクション

イベント ベースのデータ アクション

コア データ アクション

Retail Server API の呼び出し