2 回答

TA貢獻1825條經驗 獲得超6個贊
你可以看看WireMock
哪個是 HTTP API 的模擬器,所以它適合本地開發。使用它時,您將能夠模擬微服務,就好像它作為獨立的微服務在給定的主機和端口上運行一樣。
您可以將它作為獨立進程運行,也可以作為 spring 應用程序的一部分運行。
選項 1 - 配置獨立的 wiremock 服務器:
下載Wiremock 獨立 jar
使用端口在本地主機上運行獨立服務器
1234
:
java?-jar?wiremock-standalone-2.24.0.jar?--port?1234
配置 MS1 微服務以用作
localhost:1234
MS2 主機。用一些響應模擬你的 MS2(用 wiremock 模擬)端點:
curl?-X?POST?--data?'{?"request":?{?"url":?"/yourendpoint",?"method":?"GET"?},?"response":?{?"status":?200,?"body":?"Response"?}}'?http://localhost:1234/__admin/mappings/new
在這里我們做了一個模擬,當您使用 HTTP GET 訪問模擬服務器時,/yourendpoint
您將收到文本Response
作為響應。
現在,當您使用 GET 時,
localhost:1234/yourendpoint
您會得到模擬的響應:
curl?http://localhost:1234/yourendpointResponse
完整的例子可以在Wiremock Standalone docs
選項 2 - 在 Spring 應用程序中配置 WireMock 服務器:
添加
WireMock dependency
到您的項目(注意不僅要將其添加到測試范圍)創建一個用于設置服務器的 Spring bean:
@Component
public class CustomMicroserviceMock {
? ? private WireMockServer wireMockServer;
? ? public CustomMicroserviceMock() {
? ? ? ? wireMockServer = new WireMockServer(options().port(1234));
? ? ? ? wireMockServer.stubFor(get(urlEqualTo("/yourendpoint"))
? ? ? ? ? ? ? ? .willReturn(aResponse()
? ? ? ? ? ? ? ? ? ? ? ? .withHeader("Content-Type", "text/plain")
? ? ? ? ? ? ? ? ? ? ? ? .withBody("Response")));
? ? ? ? wireMockServer.start();
? ? }
? ? @PreDestroy
? ? void preDestroy() {
? ? ? ? wireMockServer.stop();
? ? }
}
當我們點擊時,localhost:1234/yourendpoint我們得到回應:Response
這只是一個 POC,但它在兩種情況下都有效。

TA貢獻1793條經驗 獲得超6個贊
我建議在您的本地機器上使用 WireMock 作為獨立服務,或者如果您熟悉 docker,您可以檢查 wiremock docker 圖像:
我將它用于我的開發和測試,它確實是一個強大的存根解決方案:)
祝你好運
添加回答
舉報