2017-10-20 35 views
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') 
     )) 
    } 
} 

}

而不是編寫完整的響應,有沒有什麼辦法來檢查只有特定的存在爲前回應屬性:語言=「法國」

在預先感謝您的幫助非常感謝。

回答

0

當然,只要刪除所有其他字段。無論你放在身體裏的什麼都會被宣稱。順便說一句,你對合同的處理看起來像一個模式。如果一個字段爲空,這意味着它必須在那裏,它必須是null或者它是可選的?

如果你想要做/全身的一部分的任何自定義的斷言,你可以使用這個http://cloud.spring.io/spring-cloud-static/Dalston.SR4/multi/multi__contract_dsl.html#_dynamic_properties_in_matchers_sections和通過任何jsonpath元素自定義斷言

BTW的響應,你可以寫headers { contentType(applicationJson()) }