Dela via


MockResponsePlugin

Simulerar svar.

Skärmbild av en kommandotolk med Dev Proxy som simulerar svar för en begäran till GitHub API.

Definition av plugin-instans

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

Konfigurationsexempel

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

Konfigurationsegenskaper

Egenskap Beskrivning Standardvärde
mocksFile Sökväg till filen som innehåller simulerade svar mocks.json
blockUnmockedRequests Returnera 502 Bad Gateway svar för begäranden som inte hånas false

Kommandoradsalternativ

Name Beskrivning Standardvärde
-n, --no-mocks Inaktivera inläsning av mock-begäranden false
--mocks-file Sökväg till filen som innehåller simulerade svar -

Simulerar filexempel

Följande är exempel på simulerade objekt.

Svara med brödtext

Svar på en begäran med ett 200 OK-svar och en JSON-brödtext.

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

Svara med fel

Svara på en begäran med svaret 404 Hittades inte.

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

Svara med binära data

Svara på en begäran med en binär avbildning som lästs in från en fil på disk.

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

Svara på nth begäran

Svara på en begäran först efter den andra gången den anropas.

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

Svara som matchar begärandetexten

Svara på en begäran som innehåller en specifik sträng i brödtexten.

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

Simulerar filegenskaper

Egenskap Beskrivning Krävs
request Begär objekt som definierar begäran att svara på ja
response Svarsobjekt som definierar svaret som ska returneras ja

Begär objekt

Varje begäran har följande egenskaper:

Egenskap Beskrivning Krävs Standardvärde Exempelvärde
url Absolut URL till en API-slutpunkt att svara på ja https://jsonplaceholder.typicode.com/posts
method HTTP-verb som används för att matcha begäran med url nej GET GET
nth Avgör att proxyn ska svara först efter när begäran fångas upp för n:e gången nej 2
bodyFragment En sträng som ska finnas i begärandetexten nej foo

Kommentarer

Använd asterisk (*) i url egenskapen om du vill matcha en serie tecken i URL:en. Till exempel https://jsonplaceholder.typicode.com/* matchningar https://jsonplaceholder.typicode.com/posts och https://jsonplaceholder.typicode.com/comments. Vid körning konverterar Dev Proxy var * och en till ett reguljärt uttryck .*.

När du definierar hån placerar du de mest specifika hånen först. Om du till exempel har två modeller, ett för https://jsonplaceholder.typicode.com/posts och ett för https://jsonplaceholder.typicode.com/*, placerar du det första hånet först. Annars matchar Dev Proxy det andra hånet först och returnerar svaret för https://jsonplaceholder.typicode.com/* alla begäranden.

Använd egenskapen nth om du behöver skicka en annan till samma begärande-URL. Du kan till exempel använda den för att simulera en långvarig åtgärd. Första gången du anropar API:et returneras ett svar med ett inprogress meddelande. Andra gången du anropar API:et returneras ett svar med completed meddelandet. Mer information om egenskapen finns i nthMock nth request (Testa nth-begäran).

Med hjälp av bodyFragment egenskapen kan du matcha begäranden baserat på brödtextinnehållet. Om du till exempel vill matcha begäranden som innehåller strängen foo i brödtexten bodyFragment anger du egenskapen till foo. Dev Proxy använder bodyFragment endast för andra begäranden än GET.

Svarsobjekt

Varje svar har följande egenskaper:

Egenskap Beskrivning Krävs Standardvärde Exempelvärde
body Brödtext som ska skickas som svar på begäran nej tomt { "foo": "bar" }
statusCode Http-statuskod för svar nej 200 404
headers Matris med rubriker som ska inkluderas i svaret nej tomt [{ name: "content-type", "value": "application/json" }]

Kommentarer

Om du vill returnera binära data anger body du egenskapen till ett strängvärde som börjar med @ följt av filsökvägen i förhållande till mocks-filen. Returnerar till exempel @picture.jpg den avbildning som lagras i picture.jpg filen i samma katalog som mocks-filen.