Как представлять ответы с гетерогенными массивами в pact-jvm - PullRequest
0 голосов
/ 30 августа 2018

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

С 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();
}

1 Ответ

0 голосов
/ 30 августа 2018

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

...