在非 JVM 世界中,於 Artifactory 使用 Stub 進行提供者合約測試

在此流程中,我們假設

  • API 生產者和 API 消費者是非 JVM 應用程式。

  • 合約定義以 YAML 撰寫。

  • Stub 儲存是 Artifactory 或 Nexus。

  • 使用 Spring Cloud Contract Docker (SCC Docker) 和 Spring Cloud Contract Stub Runner Docker (SCC Stub Runner Docker) 映像。

您可以此處閱讀更多關於如何搭配 Docker 使用 Spring Cloud Contract 的資訊。

此處,您可以閱讀一篇關於如何在多語言環境中使用 Spring Cloud Contract 的部落格文章。

此處,您可以找到一個 NodeJS 應用程式的範例,該應用程式同時將 Spring Cloud Contract 用作生產者和消費者。

生產者流程

在高階層次,生產者

  1. 撰寫合約定義(例如,以 YAML 格式)。

  2. 設定建置工具以

    1. 在給定埠上啟動具有模擬服務的應用程式。

      如果無法進行模擬,您可以設定基礎架構並以具狀態的方式定義測試。

    2. 執行 Spring Cloud Contract Docker 映像,並將執行中應用程式的埠作為環境變數傳遞。SCC Docker 映像

      • 從附加的磁碟區產生測試。

      • 針對執行中的應用程式執行測試。

測試完成後,Stub 會上傳到 Stub 儲存站點(例如 Artifactory 或 Git)。

以下 UML 圖表顯示生產者流程

flows-provider-non-jvm-producer

消費者流程

在高階層次,消費者

  1. 設定建置工具以

    • 啟動 Spring Cloud Contract Stub Runner Docker 映像並啟動 Stub。

      環境變數設定

    • 要提取的 Stub。

    • 儲存庫的位置。

      請注意

    • 若要使用本機儲存空間,您也可以將其作為磁碟區附加。

    • 執行 Stub 的埠需要公開。

  2. 針對執行中的 Stub 執行應用程式測試。

以下 UML 圖表顯示消費者流程

flows-provider-non-jvm-consumer