首頁 >後端開發 >Golang >application-go + BDD-java 中模擬第三方服務

application-go + BDD-java 中模擬第三方服務

WBOY
WBOY轉載
2024-02-11 13:39:171094瀏覽

application-go + BDD-java 中模拟第三方服务

php小編子墨今天要為大家介紹的是application-go BDD-java中模擬第三方服務的方法。在軟體開發過程中,我們經常需要與第三方服務進行交互,但在測試階段,我們可能無法直接存取這些服務。為了解決這個問題,我們可以使用application-go和BDD-java來模擬第三方服務的行為,以便進行更有效的測試。下面,就讓我們一起來了解具體的實作方法吧!

問題內容

我最近開始研究 BDD(使用 Gherkin Restassured)。需要模擬第三方servicd,以下是我的用例。

  1. 服務 A 在內部呼叫服務 B
  2. 該應用程式位於 goLang 中。
  3. BDD 採用 Java 語言。

我們有一個 CI 管道在運行,它產生 rpm 並將 rpm 部署到虛擬機器中。 在該 VM 上,我們執行 BDD(目前 Service-A 和 Service-B 部署在同一 VM 上)

有沒有辦法可以模擬 Service-B,這樣我就不必依賴 Service-B?如果是的話,這裡最好的方法是什麼。

嘗試過 goLang httptest 在單元測試層級模擬服務。 但在使用 BDD 在管道中創建 rpm 後如何進行模擬。

謝謝

解決方法

如果您的服務A 在內部呼叫服務B,而不是透過Web 或RPC,那麼您可以使用依賴項注入來注入服務B 的「假”版本。 (請注意,這不一定涉及依賴項注入框架;基於建構函數和基於屬性的注入也是有效的)。如果服務B沒有接口,則提取一個並使用瘦適配器根據環境呼叫真實服務或假服務。

只要場景僅與服務 A 的使用者介面或 API 交互,您就不需要更改場景。

您將需要更改建置管道的工作方式,以便它使用您的假程式碼而不是真實程式碼進行部署。

您甚至可以在運行時執行此操作,透過讓適配器呼叫相關服務來從假的切換到真實的東西。切換或部署可以由環境變數或建置參數觸發。

但請小心,不要將測試服務部署到生產環境!

如果您使用持續部署,那麼理想情況下,建置管道中的最後一步應該部署並測試與實際服務的互動。如果由於某種原因這是您唯一的工作方式,您仍然可以做一些可能有幫助的事情:

  • 您可以存根服務 B 使用的數據,以便以可預測的方式運行

  • 您可以使用測試實例。請聯絡您的服務供應商,看看他們是否有適合您的服務。我建議您仍然應該檢查實際服務的部署是否成功,最好使用某種自動化測試,即使您必須在生產中運行。只需進行基本的冒煙測試即可檢查系統是否已連接。請注意,部署越容易,就越容易從錯誤中復原;如果您無法快速部署,那麼您將需要更徹底的檢查。

如果 RPM 是在沒有任何類型的偽造或測試實例的情況下創建和部署的,並且您無法配置環境以使用此類偽造或測試實例,那麼您將無法模擬它。建置管道必須是部署偽造的一部分。如果您可以控制 CI 管道,那麼這不會是問題;否則請聯絡您的建置團隊。他們可能有經驗或能夠向您推薦可以幫助您的其他人。畢竟,偉大的 BDD 是由對話驅動的!

以上是application-go + BDD-java 中模擬第三方服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除