在使用spring-cloud-contract框架编写合同时,是否有任何方法可以测试响应中的特定字段是否与给定文本匹配。
package contracts
import org.springframework.cloud.contract.spec.Contract
Contract.make {
request {
method 'GET'
url value(consumer(regex('/app/emp/employee/[0-9]{3}')), producer('/app/emp/employee/151'))
}
response {
status 200
body([
subjectsList: null,
errorResponse: null,
status: 'success',
employeeList: null,
Employee: [
EmployeeId: 151,
firstName: 'xxx',
lastName: 'xxx',
middleName: 'xxx',
dateOfBirth: 01012001,
status: 'inbound',
cin: '345',
ssn: null,
EmployeeType: 'HoH',
preferredLanguage: 'french',
preferredContactMethod: null,
createdBy: null,
creadtedOn: null,
updatedBy: null,
updatedOn: null,
transactionId: null
],
paginated: null
])
headers {
header('Content-Type': value(
producer(regex('application/json.*')),
Employee('application/json')
))
}
}
}
有没有办法只检查响应中存在的特定属性ex:language =' french'
提前致谢,非常感谢您的帮助。
答案 0 :(得分:0)
当然,只需删除所有其他字段即可。无论你放入体内的是什么都会被断言。 BTW你对合同的处理看起来像一个架构。如果一个字段为空,这意味着它必须在那里,它必须为null或者它是可选的?
如果你想在/ body的部分做任何自定义断言,你可以使用这个http://cloud.spring.io/spring-cloud-static/Dalston.SR4/multi/multi__contract_dsl.html#_dynamic_properties_in_matchers_sections并传递任何jsonpath元素进行自定义断言
BTW您可以写下headers { contentType(applicationJson()) }