与 Dredd 进行合同测试时出现 Int32 错误

Int32 Error whilst contract testing with Dredd

我有一个使用 Swagger2 的应用程序。这有一个具有以下 swagger 文档的端点:

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

那我的测试就通过了。

我正在使用这样的 springfox 注释生成这个 swagger 文档:

@ApiModel
public class MyResponse{

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

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

}

我想做的是添加某种注释,使 swagger2 生成没有 "format": "int32" 行的文档,这似乎导致了测试失败。

我认为这不是 Dredd 的问题,而是我不知道如何在 Swagger 中表达我想要的问题。任何想法如何解决这个问题?我需要使用某个注释吗?

降级到 dredd 12 为我解决了这个问题。看起来 13.x 版本有问题