Проверка ключа в весенних облачных контрактах - PullRequest
0 голосов
/ 02 июля 2019

Как проверить формат ключа по ответу json в тестах весеннего облачного контракта?

Допустим, у меня есть ответ json, который выглядит следующим образом:

{
  "products": {
    "0": {
      "type": "food",
      "name": "pizza"
    },
    "9": {
      "type": "drink",
      "name": "wine"
    }
  }
}

И тест контракта выглядит следующим образом:

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    description 'Dynamic key example'
    request {
        method 'GET'
        urlPath '/products/all'
    }

    response {
        status 200
        headers {
            contentType applicationJsonUtf8()
        }
        body(
                [
                        "products": [
                                "0": [
                                        "type": $(anyOf("food", "drinks")),
                                        "name"  : $(nonBlank()),
                                ]
                        ]
                ]
        )
    }
}

Идентификаторы продукта ("0" и "9") могут принимать любые положительные целые значения.Я хочу проверить идентификаторы продукта в тестовом контракте.Но если я заменю "0" в контракте на $(consumer("0"), producer(regex("^\\d*\$"))), произойдет сбой.

Есть идеи, как решить эту проблему?Возможно ли это вообще?

PS У меня нет возможности изменить протокол

1 Ответ

1 голос
/ 02 июля 2019

Проблема была в синтаксисе Groovy Map: ($(consumer("0"), producer(regex("^\\d*\$"))))

И полный ответ:

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    description 'Dynamic key example'
    request {
        method 'GET'
        urlPath '/products/all'
    }

    response {
        status 200
        headers {
            contentType applicationJsonUtf8()
        }
        body(
                [
                        "products": [
                                ($(consumer("0"), producer(regex("^\\d*\$")))): [
                                        "type": $(anyOf("food", "drinks")),
                                        "name"  : $(nonBlank()),
                                ]
                        ]
                ]
        )
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...