Spring Cloud Contract - массив строк в качестве параметра запроса - PullRequest
0 голосов
/ 29 апреля 2020

Я ищу способ создания контракта для параметра запроса, который является массивом, ie (на основе open-api):

Arrays can be serialized as:

form – /products?color=blue,green,red or /products?color=blue&color=green, depending on the explode keyword
spaceDelimited (same as collectionFormat: ssv in OpenAPI 2.0) – /products?color=blue%20green%20red
pipeDelimited (same as collectionFormat: pipes in OpenAPI 2.0) – /products?color=blue|green|red

В текущем решении я просто принимаю все:

Contract.make {
    request {
        method 'GET'
        urlPath ('/products'){
            queryParameters {
              parameter 'color': value(any())
            }
        }
        headers {
            header 'corrid': $(anyNonBlankString())
        }
    }
    response {

    }
}

В документах я не могу найти этот пример: https://cloud.spring.io/spring-cloud-contract/2.0.x/multi/multi__contract_dsl.html#_request

1 Ответ

0 голосов
/ 29 апреля 2020

Вы можете использовать регулярное выражение для этого. Хотя я бы не рекомендовал использовать Spring Cloud Contract для проверки значений вашего API, он предназначен для проверки структуры.

Это должно быть возможно так:

email: $(consumer(optional(regex(email()))), producer('abc@abc.com')),

Вы можете взглянуть на опции сборки, чтобы предоставить свои собственные. Дополнительная информация: https://cloud.spring.io/spring-cloud-contract/reference/html/project-features.html#contract -dsl-regex

...