spring 云合同 - 游览 - 请求正文问题
spring cloud contract - tour - request body issue
我正在尝试了解 spring 云合同,所以正在阅读导览。
我的问题专门针对此部分:
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。这些在生产者端变成测试是否正确,所以它们 运行 反对我真正的服务实施?
那么这是否意味着我的实际实现需要支持 1234567890 的硬编码 client.id?
TIA
不同之处在于,在 Groovy DSL 中我们可以编写代码,而 YAML 只是声明性的。在Groovy 中,在正文中,我们可以声明正文特定部分的值将是动态的。然后在运行时我们将生成固定值(例如,对于生成的测试)。您也可以通过 bodyMatchers
部分实现相同的效果。
但是在 Yaml 中你不能编码。您需要提供一个固定值,如果您想拥有该特定值的动态部分,例如body 元素,那么您必须在匹配器部分提供该值。这将告诉框架,例如,有一个固定值。生成的测试但也有一个动态部分需要考虑,例如对于存根。
我正在尝试了解 spring 云合同,所以正在阅读导览。
我的问题专门针对此部分:
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。这些在生产者端变成测试是否正确,所以它们 运行 反对我真正的服务实施?
那么这是否意味着我的实际实现需要支持 1234567890 的硬编码 client.id?
TIA
不同之处在于,在 Groovy DSL 中我们可以编写代码,而 YAML 只是声明性的。在Groovy 中,在正文中,我们可以声明正文特定部分的值将是动态的。然后在运行时我们将生成固定值(例如,对于生成的测试)。您也可以通过 bodyMatchers
部分实现相同的效果。
但是在 Yaml 中你不能编码。您需要提供一个固定值,如果您想拥有该特定值的动态部分,例如body 元素,那么您必须在匹配器部分提供该值。这将告诉框架,例如,有一个固定值。生成的测试但也有一个动态部分需要考虑,例如对于存根。