次の方法で共有


モック応答

モック応答を定義するには、現在の作業ディレクトリに という名前 mocks.json のファイルを作成します。 このファイルを使用すると、作業するプロジェクトごとに特定のモック セットを定義できます。 ファイルには、モック オブジェクトを含む配列をmocks含む オブジェクトが含まれています。

ヒント

モック ファイルを手動で作成する代わりに、 を使用 MockGeneratorPlugin して、インターセプトされた要求に基づいてモック ファイルを生成できます。

次の構成では、現在のユーザーに関する情報を取得するための 2 つのモック応答を示します。 現在のユーザーに関する情報を要求すると、プロキシはモック応答で応答します。 ユーザーの写真に関する情報を要求すると、プロキシは 404 状態コードを返します。

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/mockresponseplugin.schema.json",
  "mocks": [
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me",
        "method": "GET"
      },
      "response": {
        "body": {
          "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
          "businessPhones": ["+1 412 555 0109"],
          "displayName": "Megan Bowen",
          "givenName": "Megan",
          "jobTitle": "Auditor",
          "mail": "MeganB@M365x214355.onmicrosoft.com",
          "mobilePhone": null,
          "officeLocation": "12/1110",
          "preferredLanguage": "en-US",
          "surname": "Bowen",
          "userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
          "id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
        },
        "headers": [
          {
            "name": "content-type",
            "value": "application/json; odata.metadata=minimal"
          }
        ]
      }
    },
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 404
      }
    }
  ]
}

優先順位

モックは、ファイル内で定義されている順序で mocks.json 一致します。 同じ URL とメソッドで複数の応答を定義する場合は、最初に一致する応答が使用されます。

次の構成を使用すると、 を使用して に対するすべてのGET要求にhttps://graph.microsoft.com/v1.0/me/photo500 Internal Server Errorプロキシが応答します。

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/mockresponseplugin.schema.json",
  "mocks": [
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 500
      }
    },
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 404
      }
    }
  ]
}

ワイルドカードのサポート

プロキシでは、URL プロパティでのワイルドカードの使用がサポートされています。 アスタリスク文字 (*) を使用して、URL 内の任意の一連の文字と一致させることができます。

次の構成を使用すると、プロキシはすべての要求に応答して、同じ応答でユーザーのプロファイルを取得します。

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/users/*"
  },
  "response": {
    "body": {
      "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
      "businessPhones": ["+1 425 555 0109"],
      "displayName": "Adele Vance",
      "givenName": "Adele",
      "jobTitle": "Product Marketing Manager",
      "mail": "AdeleV@M365x214355.onmicrosoft.com",
      "mobilePhone": null,
      "officeLocation": "18/2111",
      "preferredLanguage": "en-US",
      "surname": "Vance",
      "userPrincipalName": "AdeleV@M365x214355.onmicrosoft.com",
      "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
    }
  }
}

次の構成を使用すると、ユーザーの写真のバイナリを取得するように要求すると、プロキシはディスクから同じイメージを返します。

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
  },
  "response": {
    "body": "@picture.jpg",
    "headers": [
      {
        "name": "content-type",
        "value": "image/jpeg"
      }
    ]
  }
}

次の構成を使用すると、クエリ文字列パラメーターを使用して現在のユーザーのプロファイルを取得するように要求すると、プロキシは同じ応答を返します。

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/me?*"
  },
  "response": {
    "body": {
      "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
      "businessPhones": [
        "+1 412 555 0109"
      ],
      "displayName": "Megan Bowen",
      "givenName": "Megan",
      "jobTitle": "Auditor",
      "mail": "MeganB@M365x214355.onmicrosoft.com",
      "mobilePhone": null,
      "officeLocation": "12/1110",
      "preferredLanguage": "en-US",
      "surname": "Bowen",
      "userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
      "id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
    }
  }
},

ファイルの内容で応答する

モック ファイルをクリーンして整理するには、応答の内容を別のファイルに格納し、モック ファイルで参照します。 開発プロキシに指示するには、モック応答本文をファイルから読み込むには、 プロパティを body@ 設定し、その後にモック ファイルに対する相対ファイル パスを設定します。

たとえば、次のモック応答構成では、モック ファイルと同じフォルダーにあるファイルのresponse.json内容を使用して、 へのhttps://graph.microsoft.com/v1.0/me要求に応答するように Dev Proxy に指示します。

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/me",
    "method": "GET"
  },
  "response": {
    "body": "@response.json",
    "headers": [
      {
        "name": "content-type",
        "value": "application/json; odata.metadata=minimal"
      }
    ]
  }
}

トークンを使用すると、 @テキスト ファイルと バイナリ ファイルで動作します。

Microsoft Graph Batch のサポート

開発プロキシでは、バッチ要求で Microsoft Graph に送信されるモック応答がサポートされています。

モック ファイルにバッチ要求への応答を含める特別な要件はありませんが、要求がモックされた応答と一致しない場合は、 502 Bad Gateway 応答が返されます。

ロックされていない要求のサポート

Dev Proxy では、プロキシがモックされていない要求をインターセプトするときにエラーをスローすることをサポートしています。 モックされていない要求を失敗させる機能は、モック ファイルで見逃した要求を識別するのに役立ちます。

この機能を有効にするには、devproxyrc ファイルの blockUnmockedRequestsMockResponsePlugin config セクションに 設定を追加して有効にします。

{
  "mocksPlugin": {
    "mocksFile": "mocks.json",
    "blockUnmockedRequests": true
  }
}

モックされていない要求がインターセプトされると、 502 Bad Gateway 応答が返されます。

次のステップ

MockResponsePlugin の詳細については、こちらを参照してください。

サンプル

関連する開発プロキシのサンプルも参照してください。