在非 JVM 環境下使用 Artifactory 中的 Stub 進行 Provider 契約測試

在此流程中,我們假設:

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

  • 契約定義以 YAML 格式編寫。

  • Stub 儲存使用 Artifactory 或 Nexus。

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

你可以在此處閱讀更多關於如何將 Spring Cloud Contract 與 Docker 結合使用的資訊。

此處有一篇關於如何在多語言世界中使用 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