我正试图了解Spring Cloud合同,因此正在阅读导览。
我的问题专门针对此部分:
https://cloud.spring.io/spring-cloud-contract/multi/multi__spring_cloud_contract_verifier_introduction.html#_defining_the_contract
查看请求正文部分,Groovy合同和YAML合同之间存在差异。
在Groovy DSL中:
“ client.id”:$(regex('[0-9] {10}'))
在YAML中:
“ client.id”:1234567890
您可以看到区别-一个是特定的,另一个不是。
问题是:
Q1。这种区别是故意的吗?
Q2。将它们转换为生产者端的测试是否正确,从而使它们与我对服务的实际实现相抵触?
那是否意味着我的实际实现需要支持硬编码的client.id 1234567890?
TIA
答案 0 :(得分:0)
区别在于,在Groovy DSL中,我们可以对sth进行编码,而YAML只是声明性的。在Groovy中,我们可以说身体的特定部分的值将是动态的。然后在运行时,我们将生成固定值(例如,用于生成的测试)。您也可以通过bodyMatchers
部分来达到同样的目的。
但是在Yaml中,您不能编写代码。您需要提供一个固定值,并且如果您想拥有该特定部分的动态部分,例如body元素,则必须在匹配器部分中提供该值。这将告诉框架存在固定值,例如生成的测试,但还有一个动态的方面需要考虑,例如存根。