Compartir a través de


MockResponsePlugin

Simula respuestas.

Captura de pantalla de un símbolo del sistema con la simulación de respuesta del proxy de desarrollo para una solicitud a la API de GitHub.

Definición de instancia del complemento

{
  "name": "MockResponsePlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "mocksPlugin"
}

Ejemplo de configuración

{
  "mocksPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

Propiedades de configuración

Propiedad Descripción Predeterminado
mocksFile Ruta de acceso al archivo que contiene respuestas ficticias mocks.json
blockUnmockedRequests Devolver 502 Bad Gateway respuesta para las solicitudes que no se simulan false

Opciones de línea de comandos

Nombre Descripción Predeterminado
-n, --no-mocks Deshabilitar la carga de solicitudes ficticias false
--mocks-file Ruta de acceso al archivo que contiene respuestas ficticias -

Ejemplos de archivos ficticios

A continuación se muestran ejemplos de objetos ficticios.

Responder con cuerpo

Respuesta a una solicitud con una respuesta 200 OK y un cuerpo JSON.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.mocksfile.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"
          }
        ]
      }
    }
  ]
}

Respuesta con error

Responda a una solicitud con una respuesta 404 No encontrada.

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

Respuesta con datos binarios

Responda a una solicitud con una imagen binaria cargada desde un archivo en el disco.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/users/*/photo/$value",
        "method": "GET"
      },
      "response": {
        "body": "@picture.jpg",
        "headers": [
          {
            "name": "content-type",
            "value": "image/jpeg"
          }
        ]
      }
    }
  ]
}

Responder a nth petición

Responda a una solicitud solo después de la segunda vez que se llame.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "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
        }
      }
    }
  ]
}

Respuesta que coincida con el cuerpo de la solicitud

Responda a una solicitud que contenga una cadena específica en el cuerpo.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "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..."
        }
      }
    }
  ]
}

Propiedades de archivo simuladas

Propiedad Descripción Obligatorio
request Objeto request que define la solicitud a la que responder
response Objeto response que define la respuesta que se va a devolver

Request (objeto)

Cada solicitud tiene las siguientes propiedades:

Propiedad Descripción Obligatorio Valor predeterminado Valor de ejemplo
url Dirección URL absoluta a un punto de conexión de API al que responder https://jsonplaceholder.typicode.com/posts
method Verbo HTTP usado para hacer coincidir la solicitud con url No GET GET
nth Determina que el proxy debe responder solo después de interceptar la solicitud de la nª vez. No 2
bodyFragment Cadena que debe estar presente en el cuerpo de la solicitud No foo

Observaciones

Use asterisco (*) en la url propiedad si desea que coincida con cualquier serie de caracteres de la dirección URL. Por ejemplo, https://jsonplaceholder.typicode.com/* coincide con https://jsonplaceholder.typicode.com/posts y https://jsonplaceholder.typicode.com/comments. En tiempo de ejecución, el proxy de desarrollo convierte cada uno * en una expresión .*regular .

Al definir simulacros, coloque primero los simulacros más específicos. Por ejemplo, si tiene dos simulación, una para https://jsonplaceholder.typicode.com/posts y otra para https://jsonplaceholder.typicode.com/*, coloque primero la primera simulación. De lo contrario, el proxy de desarrollo coincide con el segundo simulacro primero y devuelve la respuesta de https://jsonplaceholder.typicode.com/* todas las solicitudes.

Use la nth propiedad si necesita enviar una dirección URL de solicitud diferente a la misma. Por ejemplo, úselo para simular una operación de larga duración. La primera vez que llame a la API, devuelve una respuesta con un inprogress mensaje. La segunda vez que se llama a la API, devuelve una respuesta con el completed mensaje. Para obtener más información sobre la nth propiedad , vea Solicitud ficticia nth.

Con la bodyFragment propiedad , puede hacer coincidir las solicitudes en función del contenido del cuerpo. Por ejemplo, si desea hacer coincidir las solicitudes que contienen la foo cadena en el cuerpo, establezca la bodyFragment propiedad fooen . El proxy de desarrollo solo usa bodyFragment para solicitudes distintas de GET.

Objeto Response

Cada respuesta tiene las siguientes propiedades:

Propiedad Descripción Obligatorio Valor predeterminado Valor de ejemplo
body Cuerpo que se va a enviar como respuesta a la solicitud No vacío { "foo": "bar" }
statusCode Código de estado HTTP de respuesta No 200 404
headers Matriz de encabezados que se van a incluir en la respuesta No vacío [{ name: "content-type", "value": "application/json" }]

Observaciones

Si desea devolver datos binarios, establezca la body propiedad en un valor de cadena que comience con @ seguido de la ruta de acceso del archivo con respecto al archivo ficticio. Por ejemplo, @picture.jpg devuelve la imagen almacenada en el archivo en el picture.jpg mismo directorio que el archivo ficticio.

Paso siguiente