Как представить ответы с помощью разнородных массивов в pact-jvm

Мне сложно понять, как представлять массивы со структурно разными объектами в массиве в пакт-контрактах.

Из pact-spec-v3

Также потребуется определить, следует ли комбинировать сопоставители с помощью логического И (все сопоставители должны совпадать) или ИЛИ (хотя бы одно сопоставление должно совпадать). И должно быть по умолчанию, но есть случаи, когда ИЛИ имеет смысл

Можно ли это использовать для «ИЛИ» двух разных типов объектов?

Это ответ, который я пытаюсь смоделировать с помощью 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();
}

person madhukar93    schedule 30.08.2018    source источник


Ответы (1)


В настоящее время это непросто смоделировать с помощью Pact, это работает при условии, что каждый элемент аналогичен приведенному примеру. Для обсуждения см. https://github.com/pact-foundation/pact-specification/issues/38

person Ronald Holshausen    schedule 30.08.2018