如何在pact-jvm中用异构数组表示响应

时间:2018-08-30 05:36:35

标签: pact pact-jvm

我很难弄清楚如何在契约合同中用结构上不同的对象表示数组。

来自pact-spec-v3

  

还需要定义匹配器是否应该   与逻辑AND(所有匹配项必须匹配)或OR(至少   一位匹配者必须匹配)。 AND应该是默认值,但是有   合理的情况

这可以用来“或”两种不同类型的对象吗?

这是我正在尝试通过pact-jvm DSL建模的响应,suggestions数组包含两个具有不同模式的不同对象'1'和'3'-

{
  "suggestions": [
    {
      "display_name": "Potato",
      "type": 1,
      "keyword": "Potato",
      "category_l1": {
        "icon_image_url": "XXXXX",
        "id": 1489,
        "name": "Potato"
      }
    },
    {
      "type": 3,
      "suggestion": {
        "display_name": "New Potato (Aloo)",
        "name": "New Potato"
      }
    }
  ]
}

我到目前为止拥有的代码:

private DslPart getBody() {
    return new PactDslJsonBody()
            .eachLike("suggestions", 1)
                    .stringType("display_name")
                    .integerType("type")
                    .stringType("keyword")
                    .object("category_l1")
                        .stringType("icon_image_url")
                        .stringType("name")
                        .integerType("id")
                    .closeObject()
                    .closeObject()
            .closeArray();
}

1 个答案:

答案 0 :(得分:1)

使用Pact建模目前尚不容易,但前提是每个项目都与提供的示例相似。有关讨论,请参见https://github.com/pact-foundation/pact-specification/issues/38