Spring Cloud Contract с инкассо по запросу - PullRequest
0 голосов
/ 01 февраля 2019

Я готовлю контракты на внешнее обслуживание, от которого мы зависим.
Одним из полей в запросе является коллекция, ее размер может варьироваться.
В простейшем случае у меня есть коллекция строк.

Как определить запрос, чтобы он позволял сопоставить каждый элемент в этой коллекции с заданным регулярным выражением, и в то же время позволяет мне проверять настоящий API со значениями, которые я указал?

Я полагаю, это выглядело бы примерно так:

request {
    method 'POST'
    url "/abc"
    body([
        "someToken: $(
            consumer(regex('[a-zA-Z0-9=]+')),
            producer("asdgwrg92jgwd0vA")
        ),
        "someCollection": [$(
             consumer(regex('[A-Z]{5}')),
             producer('"ASDFF","ASDGG"')
        ]
    ])
    headers {
      contentType(applicationJson())
    }
  }

Я могу протестировать реальный сервис только с таким телом запроса:

{
    "someToken":"asdgwrg92jgwd0vA",
    "someCollection":[
        "ASDFF","ASDGG"
    ]
}

Но мой сервис может производить такие:

{
    "someToken":"adgwrgsh",
    "someCollection":[
        "ASDFG"
    ]
}

Ситуация становится сложнее с коллекцией объектов ...

Я искал ответ в официальных документах, и были описаны некоторые возможности, но я не смог их найтив образцах: /

1 Ответ

0 голосов
/ 01 февраля 2019

Чего вы действительно пытаетесь достичь?Вы хотите проверить мод, скорее всего, пару сценариев.Массив пуст или есть пара элементов, верно?Поэтому создайте 2 контракта и проверьте, можете ли вы работать с ними на стороне потребителя.

Не забудьте не принять контрактные тесты за функциональные тесты.Контрактные тесты должны утверждать семантику вашего API.Если вы можете общаться правильно.Не работает ли функционал нормально.

...