Udostępnij za pośrednictwem


MockResponsePlugin

Symuluje odpowiedzi.

Zrzut ekranu przedstawiający wiersz polecenia z serwerem proxy deweloperów symulującym odpowiedź na żądanie do interfejsu API usługi GitHub.

Definicja wystąpienia wtyczki

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

Przykład konfiguracji

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

Właściwości konfiguracji

Właściwość Opis Default
mocksFile Ścieżka do pliku zawierającego pozorne odpowiedzi mocks.json
blockUnmockedRequests Zwracanie 502 Bad Gateway odpowiedzi dla żądań, które nie są wyśmiewane false

Opcje wiersza polecenia

Nazwa Opis Default
-n, --no-mocks Wyłączanie ładowania pozornych żądań false
--mocks-file Ścieżka do pliku zawierającego pozorne odpowiedzi -

Przykłady plików makiety

Poniżej przedstawiono przykłady pozornych obiektów.

Odpowiadanie za pomocą treści

Odpowiedź na żądanie z odpowiedzią 200 OK i treścią 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"
      }
    ]
  }
}

Odpowiadanie z powodu błędu

Odpowiadanie na żądanie za pomocą odpowiedzi 404 Nie znaleziono.

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

Odpowiadanie przy użyciu danych binarnych

Odpowiadanie na żądanie przy użyciu obrazu binarnego załadowanego z pliku na dysku.

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

Odpowiadanie na nth żądanie

Odpowiedz na żądanie dopiero po drugim wywołaniu.

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

Odpowiadanie na dopasowanie treści żądania

Odpowiedz na żądanie zawierające określony ciąg w treści.

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

Makieta właściwości pliku

Właściwość Opis Wymagane
request Obiekt żądania definiujący żądanie, na które ma odpowiadać tak
response Obiekt odpowiedzi definiujący odpowiedź do zwrócenia tak

Obiekt żądania

Każde żądanie ma następujące właściwości:

Właściwość Opis Wymagane Wartość domyślna Wartość przykładowa
url Bezwzględny adres URL do punktu końcowego interfejsu API w celu reagowania na tak https://jsonplaceholder.typicode.com/posts
method Czasownik HTTP używany do dopasowywania żądania do url nie GET GET
nth Określa, że serwer proxy powinien odpowiadać tylko po przechwyceniu żądania dla czasu nth nie 2
bodyFragment Ciąg, który powinien być obecny w treści żądania nie foo

Uwagi

Użyj gwiazdki () we url właściwości ,* jeśli chcesz dopasować dowolną serię znaków w adresie URL. Na przykład https://jsonplaceholder.typicode.com/* dopasowania https://jsonplaceholder.typicode.com/posts i https://jsonplaceholder.typicode.com/comments. W środowisku uruchomieniowym serwer proxy deweloperów konwertuje każdy * z nich na wyrażenie .*regularne .

Podczas definiowania makiety należy najpierw umieścić najbardziej konkretne makiety. Jeśli na przykład masz dwa makiety, jeden dla https://jsonplaceholder.typicode.com/posts i jeden dla https://jsonplaceholder.typicode.com/*, najpierw umieść pierwszy makiety. W przeciwnym razie serwer proxy deweloperów jest zgodny z drugim pozorem i zwraca odpowiedź dla https://jsonplaceholder.typicode.com/* wszystkich żądań.

nth Użyj właściwości , jeśli chcesz wysłać inny adres URL żądania. Na przykład użyj jej do symulowania długotrwałej operacji. Przy pierwszym wywołaniu interfejsu API zwracana jest odpowiedź z komunikatem inprogress . Przy drugim wywołaniu interfejsu API zwracana jest odpowiedź z komunikatem completed . Aby uzyskać więcej informacji na temat nth właściwości, zobacz Mock nth request.

bodyFragment Za pomocą właściwości można dopasować żądania na podstawie zawartości treści. Jeśli na przykład chcesz dopasować żądania zawierające foo ciąg w treści, ustaw bodyFragment właściwość na foowartość . Serwer proxy deweloperów używa bodyFragment tylko dla żądań innych niż GET.

Obiekt odpowiedzi

Każda odpowiedź ma następujące właściwości:

Właściwość Opis Wymagane Wartość domyślna Wartość przykładowa
body Treść do wysłania jako odpowiedź na żądanie nie Pusty { "foo": "bar" }
statusCode Kod stanu HTTP odpowiedzi nie 200 404
headers Tablica nagłówków do uwzględnienia w odpowiedzi nie Pusty [{ name: "content-type", "value": "application/json" }]

Uwagi

Jeśli chcesz zwrócić dane binarne, ustaw body właściwość na wartość ciągu, która zaczyna się od @ ścieżki pliku względem pliku makiety. Na przykład @picture.jpg zwraca obraz przechowywany w picture.jpg pliku w tym samym katalogu co plik makiety.