Я работаю над весенним облачным контрактом и у меня есть сценарий использования, в котором я хочу, чтобы ответ был BAD_REQUEST, когда несколько параметров запроса отсутствуют, и ОК, когда присутствуют все обязательные параметры запроса. Чтобы добиться этого, у меня есть разные контракты (отличные файлы) для обслуживания каждого такого запроса / ответа. Но когда я проверяю от потребителя (с / без параметров запроса), все они соответствуют только 1 контракту, присутствует ли параметр запроса.
Контракты, перечисленные ниже,
Оба параметра запроса отсутствуют
Contract.make {
description("Test to see if authorisation works")
request {
method 'GET'
urlPath("/check/validate")
headers {
contentType('application/json')
}
}
response {
status(400)
"body" "shouldReturnBadRequest400BothFieldsNotPresent"
headers {
contentType('application/json')
}
}
}
Параметры запроса B отсутствуют
Contract.make {
description("Test to see if authorisation works")
request {
method 'GET'
urlPath("/check/validate") {
queryParameters {
parameter 'a' : value(regex(nonBlank()))
}
}
headers {
contentType('application/json')
}
}
response {
status(400)
"body" "shouldReturnBadRequest400BNotPresent"
headers {
contentType('application/json')
}
}
}
Параметры запроса присутствуют, и ответ в порядке
Contract.make {
description("Test to see if authorisation works")
request {
method 'GET'
urlPath('/check/validate') {
queryParameters {
parameter 'a' : equalTo("AUTHORISED")
parameter 'b' : value(regex(nonBlank()))
}
}
headers {
contentType('application/json')
}
}
response {
status(200)
"body" "shouldReturn200OkValidRequest"
headers {
contentType('application/json')
}
}
}
Вопросы:
Все мои тестовые случаи соответствуют первому случаю Оба параметра запроса отсутствуют , а не соответствуют специфике. Пожалуйста, дайте мне знать, что мне не хватает.
Может кто-нибудь указать на документацию Spring-Cloud-контракта по параметрам запроса, которые удовлетворяют вышеуказанному требованию. Нашел это (http://cloud.spring.io/spring-cloud-contract/1.0.x/#_passing_optional_parameters), но мне нужно больше информации о моем вышеуказанном требовании.