2017-11-30 5 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と少なくとも1つのアレイのエントリがあることを確認します属性は空ではありません。

すべてのエントリに空でないものがあることをテストしたいと思います。profile

私はすでにテストマッチャを使用して、これを試してみました:

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

これは非空であることをすべてのprofileフィールドをチェックしますが、そのようなフィールドが実際に存在するかどうかをチェックしません。

profileフィールドがすべての配列エントリに存在し、それぞれが空でないことをテストするにはどうすればよいですか?

答えて

1

testMatchersセクションにbyCommandを使用してリストを渡すのが最も簡単な方法だと思います。次に、プログラムで必要なものを手動でアサートします。

+0

ありがとうございました。明らかにするために、既存のマッチャーは単一のエントリをテストすることのみを目的としていますか? –

+0

私はここでそれを本当に徹底的に記述していると思います(http://cloud.spring.io/spring-cloud-static/Edgware.RELEASE/single/spring-cloud.html#_dynamic_properties_in_the_matchers_sections)。あなたがjsonパスとして渡すものはすべてアサートします。リスト、シングルエントリー、地図など –

+0

申し訳ありませんが、そこに明確な説明がありません。何かがあれば、今私はもっと混乱しています。私が各オブジェクトを配列にアサートできると私は期待していました。元の回答は、これがプログラムでアサーションすることによってのみ可能であることを示しています。本当? –

関連する問題