2017-11-30 16 views
0

나는이 같은 계약을 체결 한 가정마다 배열 항목에 존재하는 비 비어 :

org.springframework.cloud.contract.spec.Contract.make { 
request { 
    method "GET" 
    url "/api/profiles" 
    headers { 
     header('Accept': 'application/json;charset=UTF-8') 
     header('Content-Type': 'application/json;charset=UTF-8') 
    } 
} 
response { 
    status 200 
    headers { 
     header('Content-Type': 'application/json;charset=UTF-8') 
    } 
    body(
      value(
        stub(
          '''\ 
        [ 
         { 
         "profile": "profile1", 
         }, 
         { 
         "profile": "profile2", 
         } 
        ] 
        ''' 
        ), 
        test(
          [ 
            [ 
              "profile" : regex(nonEmpty()), 
            ] 
          ] 
        ) 
      ) 
    ) 
} 

"profile" : regex(nonEmpty())의 시험 만 profile와 적어도 하나 개의 배열 항목이 있는지 확인 속성은 비어 있습니다.

모든 항목이 비어 있지 않은지 확인하고 싶습니다. profile. 이 비 비어하기 위해 모든 profile 필드를 확인하지만, 같은 필드가 실제로 존재하는지 여부를 확인하지 않습니다

jsonPath('$.[*].profile', byRegex(nonEmpty())) 

:

나는 이미 사용 테스트 매처 (matcher)을 시도했다.

모든 배열 항목에 profile 필드가 있고 각 필드가 공백이 아닌지 어떻게 테스트 할 수 있습니까?

답변

1

가장 쉬운 방법은 testMatchers 섹션에 byCommand을 사용하고 거기에 목록을 전달하는 것입니다. 그런 다음 프로그래밍 방식으로 원하는 모든 것을 수동으로 지정하십시오.

+0

감사합니다. 명확하게하기 위해, 기존의 matchers는 단일 항목을 테스트하기위한 용도로만 사용됩니까? –

+0

나는 그것을 여기에서 철저히 기술한다고 생각한다 (http://cloud.spring.io/spring-cloud-static/Edgware.RELEASE/single/spring-cloud.html#_dynamic_properties_in_the_matchers_sections). 당신이 json 경로로 전달하는 것은 무엇이든 주장합니다. 목록, 단일 입력,지도 등 –

+0

죄송 합니다만 명확한 설명을 찾을 수 없습니다. 무엇보다 나는 지금 혼란 스럽다. 배열에 각 객체를 지정할 수 있다는 것이 내 기대였다. 원래의 대답은 프로그래밍 방식으로 어설 션함으로써 만 가능하다는 것을 나타냅니다. 그게 사실이야? –