Partager via


Réponses simulées

Pour définir des réponses fictives, créez un fichier nommé mocks.json dans le répertoire de travail actif. Ce fichier vous permet de définir un ensemble spécifique de fictives pour chaque projet avec lequel vous travaillez. Le fichier contient un objet avec un mocks tableau contenant des objets fictifs .

Conseil

Au lieu de créer manuellement le fichier fictive, vous pouvez utiliser pour MockGeneratorPlugin générer le fichier fictive en fonction des requêtes interceptées.

La configuration suivante illustre deux réponses fictives pour récupérer des informations sur l’utilisateur actuel. Lorsque vous demandez des informations sur l’utilisateur actuel, le proxy répond avec une réponse factice. Lorsque vous demandez les informations sur la photo de l’utilisateur, le proxy retourne un code 404 status.

{
  "$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
      }
    }
  ]
}

Priorité de l’ordre

Les fictives sont mises en correspondance dans l’ordre dans lequel elles sont définies dans le mocks.json fichier. Si vous définissez plusieurs réponses avec la même URL et la même méthode, la première réponse correspondante est utilisée.

Lorsque vous utilisez la configuration suivante, le proxy répond à toutes les GET demandes à avec 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
      }
    }
  ]
}

Prise en charge des caractères génériques

Le proxy prend en charge l’utilisation de caractères génériques dans la propriété URL. Vous pouvez utiliser le caractère astérisque (*) pour faire correspondre n’importe quelle série de caractères dans l’URL.

Lorsque vous utilisez la configuration suivante, le proxy répond à toutes les demandes d’obtention du profil d’un utilisateur avec la même réponse.

{
  "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"
    }
  }
}

Lorsque vous utilisez la configuration suivante, le proxy retourne la même image à partir du disque lorsque vous demandez à obtenir le binaire de la photo d’un utilisateur.

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

Lorsque vous utilisez la configuration suivante, le proxy retourne la même réponse lorsque vous demandez à obtenir le profil de l’utilisateur actuel avec n’importe quel paramètre de chaîne de requête.

{
  "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"
    }
  }
},

Répondre avec le contenu d’un fichier

Pour que votre fichier fictif reste propre et organisé, vous pouvez stocker le contenu de la réponse dans un fichier distinct et le référencer dans le fichier fictive. Pour demander au proxy dev de charger le corps de la réponse fictive à partir d’un fichier, définissez la body propriété sur @ suivi du chemin du fichier par rapport au fichier fictif.

Par exemple, la configuration de réponse factice suivante demande au proxy dev de répondre à toute demande https://graph.microsoft.com/v1.0/me avec le contenu du response.json fichier situé dans le même dossier que le fichier fictif.

{
  "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"
      }
    ]
  }
}

L’utilisation de - @token fonctionne avec des fichiers texte et binaires.

Prise en charge de Microsoft Graph Batch

Dev Proxy prend en charge les réponses fictives envoyées dans les requêtes par lots à Microsoft Graph.

Il n’existe aucune exigence particulière pour inclure des réponses aux demandes par lots dans vos fichiers fictifs. Toutefois, si une demande n’est pas mise en correspondance avec une réponse simulée, une 502 Bad Gateway réponse est retournée.

Prise en charge des demandes non bloquées

Dev Proxy prend en charge la levée d’une erreur lorsque le proxy intercepte une requête non bloquée. La possibilité d’échouer les demandes non bloquées est utile pour identifier les demandes que vous avez manquées dans votre fichier fictif.

Pour activer cette fonctionnalité, ajoutez et activez le paramètre à la blockUnmockedRequests section de configuration MockResponsePlugin dans le fichier devproxyrc .

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

Lorsqu’une requête non envoyée est interceptée, une 502 Bad Gateway réponse est retournée.

Étape suivante

En savoir plus sur MockResponsePlugin.

Exemples

Consultez également les exemples de proxy de développement associés :