Я понимаю, что тесты контрактов используются для тестирования контрактов между приложениями, а не для проверки бизнес-функций. Напишите один контракт на положительный сценарий, другой на отрицательный.
Но представьте себе следующие примеры:
// contract (#1)
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url 'client/1'
}
response {
status 200
body([
id: 1
name: "Barbara"
address: "Park Avenue 1"
])
}
}
// contract (#2)
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url 'client/9999'
}
response {
status 404
body([])
}
}
// contract (#3)
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url 'client/!^&(^%@'
}
response {
status 400
body([])
}
}
Мой положительный случай - когда клиент найден (№1). Могу ли я передавать переменные в URL-адресе, возможно ли это в SCC? Могу ли я использовать здесь регулярные выражения для проверки ввода?
Я как бы почувствовал необходимость в двух отрицательных случаях: - пользователь не существует (# 2), - запрос недействителен (# 3)
Это разумно, или я упускаю из виду суть контрактов, ориентированных на потребителя? Вы бы написали что-нибудь на этих контрактах?
У меня также возникают проблемы с рассуждением о продюсере. Если вышеизложенное было как-то разумно, то на стороне производителя у меня будут (автоматически сгенерированные) тесты для контрактов, но как я могу различить существующего и несуществующего клиента? Я знаю, что не имеет смысла заботиться о реальных данных в контракте ... но как проверить контракт (№2), когда пользователя не существует?