0

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

}

有没有办法只检查响应中存在的特定属性,而不是写完整的响应:语言='法语'

在此先感谢,非常感谢您的帮助。

4

1 回答 1

0

当然,只需删除所有其他字段。无论你放入体内什么都会被断言。顺便说一句,您对合同所做的事情看起来像一个模式。如果一个字段为空,这意味着它必须存在并且必须为空,或者它是可选的?

如果您想对/全身进行任何自定义断言,您可以使用此http://cloud.spring.io/spring-cloud-static/Dalston.SR4/multi/multi__contract_dsl.html#_dynamic_properties_in_matchers_sections并传递任何 jsonpath自定义断言的元素

顺便说一句,您可以写下回复headers { contentType(applicationJson()) }

于 2017-10-20T11:16:08.970 回答