Ошибка Int32 во время контрактного тестирования с Dredd - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть приложение, которое использует Swagger2. У этого есть конечная точка, которая имеет следующую документацию по чванству:

{
  "MyEndpoint": {
    "type": "object",
    "properties": {
      "resultCount": {
        "type": "integer",
        "format": "int32"
      },
      "results": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/MyResult"
        }
      },
      "title": "MyEndpoint"
    },
    "MyResult": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "AResult"
    }
  }
}

Это автоматически генерируется из аннотаций по всему моему проекту.

При выполнении моего теста контракта Dredd я получаю следующую ошибку с этим сообщением об ошибке:

error: Error: unknown format "int32" is used in schema at path "#/properties/resultCount"

Мой dredd.yml файл указывает на автоматически сгенерированный файл, но если я изменяю его на точку вручную созданный файл json, идентичный показанному выше, за исключением части resultCount, выглядит следующим образом:

"resultCount": {
   "type": "integer"
}

Тогда мой тест пройдет.

Я создаю эту документацию по swagger, используя аннотации springfox, подобные этой:

@ApiModel
public class MyResponse{

    @ApiModelProperty(dataType = "Number")
    private int resultCount;

    @ApiModelProperty(dataType = "MyResult")
    private MyResult aresult;

}

Я пытаюсь создать некую аннотацию, которая заставляет swagger2 генерировать документацию без "format": "int32" линия, которая, кажется, вызывает сбой теста.

Я не думаю, что это проблема с Дреддом, но проблема со мной, не зная, как express что я хочу в Сваггере. Есть идеи, как решить эту проблему? Нужно ли использовать определенную аннотацию?

...