我了解合同测试用于测试应用程序之间的合同,而不是用作业务功能的检查器。为正面情景写一份合同,为负面情景写一份。
但是想象一下下面的例子:
// 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)?