2017-12-04 4 views
0

순서가 비 결정적 인 해시 배열을 반환하는 서비스가 있습니다. 특정 키/값을 가진 해시가 하나 있는지 확인하고 해시에 데이터가 채워지지만 나머지 해시는 데이터에 신경 쓰지 않습니다. 예를 들어, 서비스는이 반환하는 경우 :pact : 배열에 일치하는 해시가 포함되어 있는지 확인하십시오.

내가 배열에서 그 유효성을 검사 할
[ 
    { 
     "key":"meaningless1", 
     "data": { 

     } 
    }, 
    { 
     "key":"meaningless2", 
     "data": { 
      "some": "data", 
      "goes": ["here"] 
     } 
    }, 
    { 
     "key":"meaningful", 
     "data": { 
      "regex": "value", 
      "integer": 1, 
      "boolean": true 
     } 
    } 
] 

,이 "key":"meaningful"이있는 해시이며, 그 해시에서 data 해시 값을 가진 regex의 키를 가지고 그 regex, 정수인 integer 키 및 부울 인 boolean 키를 찾습니다. 다른 해시에 데이터가 있거나 데이터가이 스키마와 일치하는지는 상관하지 않습니다.

오른쪽 key뿐 아니라 모든 해시에 대해 스키마를 확인하기 때문에 EachLike을 사용할 수 없습니다. 나는 또한이 같은 시도 :

expected = [ 
    { 
     "key":"meaningful", 
     "data":{ 
      "regex":Term("v.*", "value"), 
      "integer":Like(1), 
      "boolean":Like(True) 
     } 
    } 
] 

를하지만 단순히 의미 결과 배열의 0 번째 요소에 대해이에 대해 확인하려하는지 확인하려고 :

{ 
    "key":"meaningless1", 
    "data": { 

    } 
}, 

내가 할 수 원하는 무엇인가 ?

답변

0

현재로서는 불가능합니다. 요청하는 기능에 대해이 대화에 참여하고 싶을 수도 있습니다. https://github.com/pact-foundation/pact-specification/issues/38

그러나 제가 지적하고자하는 한 가지 사실은 제공자의 데이터를 제어 할 수있을 때 협약이 가장 잘 작동한다는 것입니다. 데이터를 제어 할 수 없다면 협정이 시나리오에 가장 적합한 도구가 아닐 수도 있습니다. 읽으신 분 : https://github.com/pact-foundation/pact-ruby/wiki/Why-Pact-may-not-be-the-best-tool-for-testing-public-APIs

관련 문제