在春季云联系人创建的回复中检查部分归档

时间:2017-10-20 11:07:40

标签: spring-cloud-contract

在使用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'

提前致谢,非常感谢您的帮助。

1 个答案:

答案 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()) }

的回复