非 JVM 環境における Artifactory のスタブを使用したプロバイダー 契約のテスト

このフローでは、次のことを前提としています。

  • API プロデューサーと API コンシューマーは非 JVM アプリケーションです。

  • 契約定義は YAML で記述されます。

  • スタブストレージは Artifactory または Nexus です。

  • Spring Cloud Contract Docker (SCC Docker) および Spring Cloud Contract スタブランナー Docker (SCC スタブランナー Docker) のイメージを使用します。

Spring Cloud Contract を Docker とともに使用する方法の詳細については、こちらを参照してください。

​ ここ (英語) では、多言語環境で Spring Cloud Contract を使用する方法に関するブログ投稿を読むことができます。

​ ここ [GitHub] (英語) では、プロデューサーとコンシューマーの両方として Spring Cloud Contract を使用する NodeJS アプリケーションのサンプルを見つけることができます。

プロデューサーの流れ

大まかに言うと、プロデューサーは次のようにします。

  1. 契約定義を書き込みます (たとえば、YAML で)。

  2. ビルドツールを次のように設定します。

    1. 指定されたポート上でモック化されたサービスを使用してアプリケーションを開始します。

      モックが不可能な場合は、インフラストラクチャをセットアップし、ステートフルな方法でテストを定義できます。

    2. Spring Cloud Contract Docker イメージを実行し、実行中のアプリケーションのポートを環境変数として渡します。SCC Docker のイメージ:

      • 接続されたボリュームからテストを生成します。

      • 実行中のアプリケーションに対してテストを実行します。

テストが完了すると、スタブはスタブストレージサイト (Artifactory や Git など) にアップロードされます。

次の UML 図は、プロデューサーのフローを示しています。

flows-provider-non-jvm-producer

コンシューマーの流れ

大まかに言うと、コンシューマーは次のことを行います。

  1. ビルドツールを次のように設定します。

    • Spring Cloud Contract スタブランナー Docker イメージを開始し、スタブを開始します。

      環境変数は以下を構成します。

    • 取得するスタブ。

    • リポジトリの場所。

      ご了承ください:

    • ローカルストレージを使用するには、それをボリュームとして接続することもできます。

    • スタブが実行されているポートは公開する必要があります。

  2. 実行中のスタブに対してアプリケーションテストを実行します。

次の UML 図は、コンシューマーフローを示しています。

flows-provider-non-jvm-consumer