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
フィールドがすべての配列エントリに存在し、それぞれが空でないことをテストするにはどうすればよいですか?
ありがとうございました。明らかにするために、既存のマッチャーは単一のエントリをテストすることのみを目的としていますか? –
私はここでそれを本当に徹底的に記述していると思います(http://cloud.spring.io/spring-cloud-static/Edgware.RELEASE/single/spring-cloud.html#_dynamic_properties_in_the_matchers_sections)。あなたがjsonパスとして渡すものはすべてアサートします。リスト、シングルエントリー、地図など –
申し訳ありませんが、そこに明確な説明がありません。何かがあれば、今私はもっと混乱しています。私が各オブジェクトを配列にアサートできると私は期待していました。元の回答は、これがプログラムでアサーションすることによってのみ可能であることを示しています。本当? –