Поделиться через


Тестирование приложения с случайными ошибками

При создании приложений необходимо проверить, как приложение обрабатывает ошибки API. Прокси-сервер разработки позволяет имитировать ошибки в любом API, используемом в приложении, с помощью genericRandomErrorPlugin.

Имитация ошибок в любом API

Чтобы начать, включите GenericRandomErrorPlugin файл конфигурации.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "errorsContosoApi",
      "urlsToWatch": [
        "https://api.contoso.com/*"
      ]
    }
  ]
}

Совет

Так как каждый API отличается, обычно настраивается экземпляр GenericRandomErrorPlugin каждого API, на который вы хотите имитировать ошибки. Чтобы упростить управление конфигурацией, присвойте configSection ему имя после API, в который вы хотите имитировать ошибки. Кроме того, укажите URL-адреса, которые необходимо имитировать ошибки в свойстве urlsToWatch с подключаемым модулем. Это позволит упростить управление конфигурацией и повторно использовать ее в будущем.

Затем настройте подключаемый модуль для использования файла, содержащего ошибки, которые нужно имитировать.

{
  "errorsContosoApi": {
    "errorsFile": "errors-contoso-api.json"
  }
}

Наконец, в файле ошибок определите список ответов об ошибках, которые требуется имитировать. Например, чтобы имитировать ошибку 500 с пользовательским ответом JSON, используйте следующую конфигурацию:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.schema.json",
  "errors": [
    {
      "request": {
        "url": "https://api.contoso.com/*"
      },
      "responses": [
        {
          "statusCode": 500,
          "headers": [
            {
              "name": "content-type",
              "value": "application/json; charset=utf-8"
            }
          ],
          "body": {
            "code": "InternalServerError",
            "message": "Something went wrong"
          }
        }
      ]
    }
  ]
}

Вы можете определить столько ответов об ошибках, сколько вам нужно.

Запустите прокси-сервер разработки с файлом конфигурации и используйте приложение, чтобы узнать, как он обрабатывает ошибки. Для каждого соответствующего запроса прокси разработки определяет, следует ли имитировать ошибку или передавать запрос в исходный API с помощью настроенной частоты сбоев. При имитации ошибки прокси-сервер разработчика использует случайную ошибку из массива ответов об ошибках, определенных в файле конфигурации.

Временно отключить макеты

Если в файле конфигурации используются макеты, их можно временно отключить с помощью --no-mocks параметра.

devproxy --no-mocks

Следующий шаг

Дополнительные сведения о GenericRandomErrorPlugin.