我有一个时髦的脚本,我正在其中尝试验证基本测试类(assertDepartment)中的方法中的JSON属性。
import org.springframework.cloud.contract.spec.Contract
Contract.make {
request {
method 'GET'
url '/dept-service/12345'
}
response {
status 200
headers {
header 'Content-Type': 'application/json;charset=UTF-8'
}
body ($(consumer('dept.json'), producer(execute('assertDepartment($it)'))))
}
}
dept.json
[{
"departmentList": [
{
"dept_code": "12345",
"dept_name": "AAA",
"desc": "aaa",
},
{
"dept_code": "12345",
"dept_name": "BBB",
"desc": "bbb",
}
]
}]
从发布者的角度来看,这一切都很好,但是根据上面的dept.json,存根中包括的JSON的值保持不变。
从使用者的角度来看,我想仅验证JSON的签名,而不验证值,因为我正在连接到其他数据库。 在这里,JSON比较对于值而言是STRICT。 如何将通用JSON格式发送给Consumer,如何仅限制属性检查(如dept_code,dept_name,desc)而不限制值(AAA,aaa,BBB,bbb)
请帮助。
答案 0 :(得分:0)
在阅读了文档之后,我已经了解到有关Spring Cloud Contract实施的以下内容。 -Spring Cloud合同请求/响应是静态的,不是动态的 对于每种情况/场景,我们必须具有特定的静态请求/响应数据 生产者无法将其切换为实时,也无法动态更改输入并期望消费者具有相同的输出
生产者/消费者应该能够连接到相同或不同的数据库并动态切换请求输入,这使得使用Spring Cloud Contract进行集成测试更加可靠。
情况: 考虑具有联合帐户持有人信息的银行帐户。 生产者公开了微服务,该微服务向消费者提供了帐户信息。 今天,鲍勃先生拥有一个没有任何联名账户持有人信息的账户。 生产者生成存根并将其与10个消费者进行通信。 明天,鲍勃先生想增加其配偶莉莉女士为联名帐户持有人。 现在,生产者将生成存根并将其与10个消费者进行通信。 其中3个消费者不需要联名帐户信息,但其中7个严格依赖完整的信息。
首先,随着集成测试即将失败,所有10个使用者都必须从头开始重新编写测试用例,因为它会返回附加信息,但是由于使用者正在静态比较响应和硬性测试,编码值/签名。