Partager via


MockResponsePlugin

Simule les réponses.

Capture d’écran d’une invite de commandes avec une réponse simulant le proxy de développement pour une requête à l’API GitHub.

Définition de instance de plug-in

{
  "name": "MockResponsePlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
  "configSection": "mocksPlugin"
}

Exemple de configuration

{
  "mocksPlugin": {
    "mocksFile": "mocks.json"
  }
}

Propriétés de configuration

Propriété Description Default
mocksFile Chemin d’accès au fichier contenant des réponses simulées mocks.json
blockUnmockedRequests Réponse de retour 502 Bad Gateway pour les demandes qui ne sont pas moquées false

Options de ligne de commande

Nom Description Default
-n, --no-mocks Désactiver le chargement de requêtes fictives false
--mocks-file Chemin d’accès au fichier contenant des réponses simulées -

Exemples de fichiers fictifs

Voici des exemples d’objets fictifs.

Répondre avec le corps

Réponse à une requête avec une réponse 200 OK et un corps JSON.

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

Répondre avec l’erreur

Répondre à une demande avec une réponse 404 Introuvable.

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/me/photo",
    "method": "GET"
  },
  "response": {
    "statusCode": 404
  }
}

Répondre avec des données binaires

Répondez à une demande avec une image binaire chargée à partir d’un fichier sur disque.

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

Répondre à la nth demande

Ne répondez à une demande qu’après la deuxième fois qu’elle est appelée.

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/external/connections/*/operations/*",
    "method": "GET",
    "nth": 2
  },
  "response": {
    "statusCode": 200,
    "body": {
      "id": "1.neu.0278337E599FC8DBF5607ED12CF463E4.6410CCF8F6DB8758539FB58EB56BF8DC",
      "status": "completed",
      "error": null
    }
  }
}

Répondre en correspondance avec le corps de la demande

Répondez à une demande qui contient une chaîne spécifique dans le corps.

{
  "request": {
    "url": "https://login.microsoftonline.com/fa15d692-e9c7-4460-a743-29f29522229/oauth2/v2.0/token",
    "method": "POST",
    "bodyFragment": "scope=https%3A%2F%2Fapi.contoso.com%2FDocuments.Read"
  },
  "response": {
    "headers": [
      {
        "name": "Content-Type",
        "value": "application/json; charset=utf-8"
      }
    ],
    "body": {
      "token_type": "Bearer",
      "expires_in": 3599,
      "ext_expires_in": 3599,
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSU..."
    }
  }
}

Propriétés de fichier fictives

Propriété Description Obligatoire
request Objet request qui définit la demande à laquelle répondre Oui
response Objet response qui définit la réponse à renvoyer oui

Objet Requête

Chaque requête a les propriétés suivantes :

Propriété Description Obligatoire Valeur par défaut Exemple de valeur
url URL absolue vers un point de terminaison d’API auquel répondre oui https://jsonplaceholder.typicode.com/posts
method Verbe HTTP utilisé pour faire correspondre la requête avec url non GET GET
nth Détermine que le proxy ne doit répondre qu’après lors de l’interception de la demande pour la nième fois non 2
bodyFragment Chaîne qui doit être présente dans le corps de la demande non foo

Remarques

Utilisez un astérisque (*) dans la url propriété si vous souhaitez faire correspondre une série de caractères dans l’URL. Par exemple, https://jsonplaceholder.typicode.com/* correspond à https://jsonplaceholder.typicode.com/posts et https://jsonplaceholder.typicode.com/comments. Au moment de l’exécution, dev proxy convertit chacun * en expression .*régulière .

Lorsque vous définissez des fictives, placez d’abord les fictives les plus spécifiques. Par exemple, si vous avez deux fictives, l’une pour https://jsonplaceholder.typicode.com/posts et l’autre pour https://jsonplaceholder.typicode.com/*, placez la première fictive en premier. Dans le cas contraire, le proxy de développement correspond en premier à la deuxième simulation et retourne la réponse pour https://jsonplaceholder.typicode.com/* toutes les demandes.

Utilisez la nth propriété si vous devez envoyer une autre à la même URL de requête. Par exemple, utilisez-la pour simuler une opération de longue durée. La première fois que vous appelez l’API, elle retourne une réponse avec un inprogress message. La deuxième fois que vous appelez l’API, elle retourne une réponse avec le completed message. Pour plus d’informations sur la nth propriété, consultez Nth request mock.

À l’aide de la bodyFragment propriété, vous pouvez faire correspondre les demandes en fonction du contenu du corps. Par exemple, si vous souhaitez faire correspondre les demandes qui contiennent la foo chaîne dans le corps, définissez la propriété sur bodyFragmentfoo. Le proxy de développement utilise bodyFragment uniquement pour les requêtes autres que GET.

Objet Réponse

Chaque réponse a les propriétés suivantes :

Propriété Description Obligatoire Valeur par défaut Exemple de valeur
body Corps à envoyer en tant que réponse à la demande non empty { "foo": "bar" }
statusCode Code de status HTTP de réponse non 200 404
headers Tableau d’en-têtes à inclure dans la réponse non empty [{ name: "content-type", "value": "application/json" }]

Remarques

Si vous souhaitez retourner des données binaires, définissez la body propriété sur une valeur de chaîne qui commence @ par suivie du chemin du fichier par rapport au fichier fictif. Par exemple, @picture.jpg retourne l’image stockée dans le picture.jpg fichier dans le même répertoire que le fichier fictif.