私は、消費者ドライバー契約テストを実装するためのPACTとSpring Cloud契約の間のより良いツールを理解しようとしています。長所と短所を見つけるための明確な例はありません。
CDCTを実装したいのですが、プロジェクトでSpringを使用しません。私が理解したことから、私はPACTが相応しいと思います。
どんな情報や提案も歓迎します。ありがとうございました。
Spring Cloudコントラクトを使用すると、REST APIとメッセージングの両方のコントラクトを定義およびテストできます。静的型付けされたGroovy DSLを明確かつ簡単に使用でき、yamlを介してコントラクトを定義することもできます。両方ともDSLとyamlを使用したコントラクトの定義は、標準のHTTP /メッセージング用語に精通している人なら誰でも直感的に理解できます。次に例を示します。
request {
method PUT()
url '/fraudcheck'
body([
"client.id": $(regex('[0-9]{10}')),
loanAmount: 99999
])
headers {
contentType('application/json')
}
}
response {
status OK()
body([
fraudCheckStatus: "FRAUD",
"rejection.reason": "Amount too high"
])
headers {
contentType applicationJson()
}
}
プロデューサー側のテストはSCC)によって自動的に生成され、ビルド中にプロジェクトに追加されます。契約を満たす正しい実装が適切に行われていない場合、プロジェクトはビルドおよびデプロイされません。合格すると、コンシューマのスタブが生成され、対応するアーティファクトバージョンとともに公開されます。
コンシューマ側では、HTTPの場合、SCCは、Wirmock(インメモリhttpサーバー)インスタンスを起動するStubrunnerを提供し、一致するリクエストへのスタブされた応答を提供します。Stubrunnerは、外部アーティファクトリポジトリと連携します。 NexusおよびArtifactoryとして、またローカルのm2リポジトリを使用。
SCCはSpringBootとシームレスに統合し、そのまますぐにSpring Cloudと統合し、統合テスト中にサービスディスカバリの代わりに使用できます。
また、すぐにPactと統合され、SCCコントラクト定義のみを使用しながら、フックを介して追加のPact機能を活用できます。
SCCは、JVM以外のテクノロジでコントラクトを実装およびテストするためのDockerベースのオプションも提供します。
免責事項:私はSpring Cloud契約コミッターです。