[英]Microservices - Stubbing/Mocking
我正在使用微服務開發產品,但遇到了一些問題。 為了完成任何工作,我需要在本地開發環境中運行所有 9 個服務。 我正在使用 Cloud Foundry 來運行應用程序,但是在本地運行時,我只是在運行 Spring Boot Jars 本身。 有沒有辦法設置一個更輕量級的環境,這樣我就不需要一切都在運行? 理想情況下,我只希望我目前正在從事的服務必須是真實的。
我相信這是您的測試策略問題。 如果您的系統中有很多微服務,那么在開發時總是執行端到端測試是不明智的——這會降低您的生產力,而且設置通常很復雜(就像您觀察到的那樣)。
你真的應該考慮一下你想要測試的東西是什么。 在一個服務中,將核心邏輯和與其他服務的集成點解耦通常是好的。 理想情況下,您應該能夠為核心邏輯編寫簡單的單元測試。 如果您想測試與其他服務的集成點,請使用模擬庫(快速谷歌搜索表明這是有希望的http://spring.io/blog/2007/01/15/unit-testing-with-stubs-and-mocks / )
如果您還沒有,我強烈建議您設置一個單獨的暫存區,所有微服務都在運行。 在部署到生產之前,您應該在那里執行所有端到端測試。
Martin Fowler 的這篇文章對微服務測試策略有更全面的看法:
它歸結為您使用的測試技術。 這是我最近在另一個主題中的回答,您可以找到有用的https://stackoverflow.com/a/44486519/2328781 。
總的來說,我認為Wiremock是一個不錯的選擇,原因如下:
如果您的微服務允許與請求一起傳遞元數據,則可以解決這個問題。
好的微服務架構應該使用中央服務發現,每個服務也應該能夠獲取元數據映射和請求負載。 該地圖的已知字段可以由服務以某種方式解釋和修改,然后傳遞給下一個服務。
每個請求元數據最流行的用法是請求跟蹤(即收集用於處理此請求的節點樹和每個節點的時間),但它也可用於告訴整個系統要使用哪些節點
因此計划是
或者:
一種方法是使用/部署一個將路徑/網址映射到 json 響應文件的應用程序。 我個人沒有使用過它,但我相信http://wiremock.org/可能會幫助你
對於 java 微服務,您應該嘗試Stybby4j 。 這將使用 Stubby 服務器模擬其他微服務的 json 響應。 如果您覺得mocking 不足以映射您的微服務的所有功能,您應該設置一個本地docker 環境來部署依賴的微服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.