到本地主機進行測試使用Spring引導我建立這確實HTTP請求到外部遠程服務的應用程序。爲了測試,我想嘲笑這個外部服務,而不是打電話給真正的服務。當運行完整的2端測試時,代碼仍然執行HTTP請求,但我希望它調用我的模擬服務器(我可以檢查調用是否正確)。暫時域名解析春季
說出呼叫到api.example.com
製造。我可以,使用Java /春/ JBehave程序和臨時添加一行hosts文件或等效的行爲在JVM使api.example.com
解析爲localhost
?
到本地主機進行測試使用Spring引導我建立這確實HTTP請求到外部遠程服務的應用程序。爲了測試,我想嘲笑這個外部服務,而不是打電話給真正的服務。當運行完整的2端測試時,代碼仍然執行HTTP請求,但我希望它調用我的模擬服務器(我可以檢查調用是否正確)。暫時域名解析春季
說出呼叫到api.example.com
製造。我可以,使用Java /春/ JBehave程序和臨時添加一行hosts文件或等效的行爲在JVM使api.example.com
解析爲localhost
?
解決方案1:春天輪廓
假設api.example.com
在你的春天application.properties
定義,最常見的行爲是重寫使用spring boot fallback mechanism相關的春天資料這個屬性。
例如假設api.example.com
相關聯的財產api.host
鍵,你可以創建一個配置文件春季integration-testing
及其相關的應用程序性能src/test/resources
下的文件application-integration-testing.properties
。此文件將包含api.host=localhost
而生產application.properties
包含api.host=api.example.com
。
您使用@ActiveProfiles("integration-testing")
註釋您的測試,瞧,api.host
值將爲localhost
,但僅用於測試。
解決方案2:自定義DNS解析器
這似乎並不可能有默認的實現(HttpURLConnection類),自定義解析。您可以使用RestTemplate
,其實現爲ClientHttpRequestFactory,它允許使用自定義DNS解析器。 Apache HttpClient HttpComponentsClientHttpRequestFactory,see this answer瞭解更多詳情。
解決方案3:模擬休息模板
您可以使用使用MockRestServiceServer一個RestTemplate
模擬。該解決方案不涉及真正的http服務器。
我會說,你可以使用MockServer,並使用RestAssured框架,通過它可以跟蹤呼叫,並重定向到模擬服務器。
謝謝。是的,如果我找不到直接的方式將呼叫重定向到真實網址,我的計劃就是這樣。如果可能,我寧願使用正確的URL完成調用。 – Philipp
您正在使用哪個http客戶端?它可能允許定義一個自定義的DNS解析器。 –
我使用RestTemplate – Philipp