web-dev-qa-db-ja.com

PACTと春のクラウドの契約テスト

私は、消費者ドライバー契約テストを実装するためのPACTとSpring Cloud契約の間のより良いツールを理解しようとしています。長所と短所を見つけるための明確な例はありません。

CDCTを実装したいのですが、プロジェクトでSpringを使用しません。私が理解したことから、私はPACTが相応しいと思います。

どんな情報や提案も歓迎します。ありがとうございました。

9
user3602058

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契約コミッターです。

16
OlgaMaciaszek