application-go + BDD-java 中模擬第三方服務
php小編子墨今天要為大家介紹的是application-go BDD-java中模擬第三方服務的方法。在軟體開發過程中,我們經常需要與第三方服務進行交互,但在測試階段,我們可能無法直接存取這些服務。為了解決這個問題,我們可以使用application-go和BDD-java來模擬第三方服務的行為,以便進行更有效的測試。下面,就讓我們一起來了解具體的實作方法吧!
問題內容
我最近開始研究 BDD(使用 Gherkin Restassured)。需要模擬第三方servicd,以下是我的用例。
- 服務 A 在內部呼叫服務 B
- 該應用程式位於 goLang 中。
- 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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

OpenSSL,作為廣泛應用於安全通信的開源庫,提供了加密算法、密鑰和證書管理等功能。然而,其歷史版本中存在一些已知安全漏洞,其中一些危害極大。本文將重點介紹Debian系統中OpenSSL的常見漏洞及應對措施。 DebianOpenSSL已知漏洞:OpenSSL曾出現過多個嚴重漏洞,例如:心臟出血漏洞(CVE-2014-0160):該漏洞影響OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻擊者可利用此漏洞未經授權讀取服務器上的敏感信息,包括加密密鑰等。

後端學習路徑:從前端轉型到後端的探索之旅作為一名從前端開發轉型的後端初學者,你已經有了nodejs的基礎,...

在BeegoORM框架下,如何指定模型關聯的數據庫?許多Beego項目需要同時操作多個數據庫。當使用Beego...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...
