2017-03-27 5 views
0

임은 비어 있지 않은지도 (문자열 문자열)이어야한다. 그래서 요청자 (일명 소비자)이 같은 뭔가를해야한다 : "에는 myMap을": { "키를": "발"}스프링 클라우드 계약 (groovy 포함)에서 비어 있지 않은지도 소비자를 만드는 방법은 무엇입니까? 해당 분야 중 하나가 (<strong>에는 myMap</strong>를 호출 할 수 있습니다)를 JSON 시체와 함께 HTTP 요청에 대한 <strong>봄 구름 계약</strong>를 작성

는 계약서에 그런 일을 시행 할 수 있습니까? 여기

난 그냥 상황의 확인 썼다 기존 계약에 대한 예 : 요청 에 대한

package contracts 


org.springframework.cloud.contract.spec.Contract.make { 
    description(""" 
     Represents a successful scenario of registering new host 

     given: 
      hostProperties are valid 
     then: 
      we'll register the host 
    """) 
    request { 
     method 'POST' 
     urlPath value(consumer(~/\/api\/hosts\/[a-zA-Z0-90-9]+/), producer('/api/hosts/icsl7875')) 
     body([ 
      timeStamp  : $(consumer(anyNumber()), producer(334)), 
      hyperThreaded : $(consumer(regex('^(true|false)$')), producer(false)), 
      virtualMachine: $(consumer(regex('^(true|false)$')), producer(false)), 
      poolName  : $(consumer(regex('(.+)')), producer("dev_regression")), 
      osImage  : $(consumer(regex('(.+)')), producer("osImage1")), 
      cores   : $(consumer(anyNumber()), producer(2)), 
      memory  : $(consumer(anyNumber()), producer(256)), 
      osRelease  : $(consumer(regex('(.+)')), producer("osRelease1")), 
      wsmVeriosn : $(consumer(regex('(.+)')), producer("8.2.16")), 
      cpuCount  : $(consumer(anyNumber()), producer(2445L)), 
      cpuMhz  : $(consumer(anyNumber()), producer(22354L)), 
      cpuMips  : $(consumer(anyNumber()), producer(256F)) 
     ]) 
     headers { 
      contentType(applicationJsonUtf8()) 
     } 
    } 
    response { 
     status 201 
     body([ 
      groupId: $('067e6162-3b6f-4ae2-a171-2470b63dff00') 
     ]) 
     headers { 
      contentType(applicationJson()) 
     } 
    } 
} 

답변

1

나는 당신이 stubMatcher 섹션을 사용하여 수 있다고 생각합니다. WireMock의 JSON 경로는 항목이있는 경우에만 해결되어야합니다. 따라서 stubMatcher에 적절한 json 경로를 전달하고 byEquality의 유효성을 검사하면 정상입니다.

응답을

: 당신은 testMatcher 섹션을 사용하고 byCommand (https://cloud.spring.io/spring-cloud-contract/1.0.x/#_dynamic_properties_in_matchers_sections)와 함께 위임 할 수 있습니다. 메소드에서 항목이 비어 있지 않은지 확인해야합니다. 문서에서는이 jsonPath('$.duck', byCommand('assertThatValueIsANumber($it)'))처럼 sth가 있습니다. 비슷한 일을해야하지만 항목이 비어 있지 않다는 것을 주장해야합니다.