コントラクト テストは、アプリケーション間のコントラクトをテストするために使用され、ビジネス機能のチェッカーとしては使用されないことを理解しています。ポジティブなシナリオとネガティブなシナリオの契約を 1 つずつ書きます。
しかし、次の例を想像してみてください。
// contract (#1)
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url 'client/1'
}
response {
status 200
body([
id: 1
name: "Barbara"
address: "Park Avenue 1"
])
}
}
// contract (#2)
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url 'client/9999'
}
response {
status 404
body([])
}
}
// contract (#3)
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url 'client/!^&(^%@'
}
response {
status 400
body([])
}
}
私の肯定的なケースは、クライアントが見つかったときです (#1)。URL に変数を渡すことはできますか? これは SCC で可能ですか? ここで正規表現を使用して入力を検証できますか?
-- ユーザーが存在しない (#2)、 -- リクエストが無効である (#3) という 2 つの否定的なケースの必要性を感じました。
これは合理的ですか、それとも消費者主導の契約に関する要点を見逃していますか? これらの契約書に何か書いてくれますか?
プロデューサー側の推論にも問題があります。上記が何らかの理由で合理的である場合、プロデューサー側ではコントラクトの (自動生成された) テストがありますが、既存のクライアントと存在しないクライアントをどのように区別できますか? コントラクトが実際のデータを気にするのは意味がないことはわかっています...しかし、ユーザーが存在しない場合にコントラクトをテストする方法(#2)は?