2017-12-04 8 views
0

ハッシュの配列を返すサービスがあります。その順序は非決定的です。特定のキー/値を持つハッシュが1つ存在することを検証する必要があります。ハッシュにはデータが格納されますが、残りのハッシュはデータについては気にしません。サービスはこの返した場合たとえば、:pact:配列に一致するハッシュが含まれていることを検証します。

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

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

を私は配列で、そこ"key":"meaningful"を持っているハッシュがあり、そのハッシュでdataハッシュは、その値を持つregexの鍵を持っていることを検証します正規表現、整数であるintegerのキー、およびブール値であるbooleanのキーと一致します。他のハッシュがデータを持っているかどうか、またはそれらのデータがこのスキーマと一致するかどうかは気にしません。

EachLikeは、keyのものだけでなく、すべてのハッシュに対してスキーマを検証するため、使用できません。また、私はこのような何か試してみました:

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

しかし、私が指摘しておきたいことは、プロバイダーのデータを制御できるときに協定が最も効果的であるということです。データを制御できない場合、pactはシナリオに最適なツールではない可能性があります。お読みください:https://github.com/pact-foundation/pact-ruby/wiki/Why-Pact-may-not-be-the-best-tool-for-testing-public-APIs

関連する問題