2017-04-11 59 views
0

到本地主機進行測試使用Spring引導我建立這確實HTTP請求到外部遠程服務的應用程序。爲了測試,我想嘲笑這個外部服務,而不是打電話給真正的服務。當運行完整的2端測試時,代碼仍然執行HTTP請求,但我希望它調用我的模擬服務器(我可以檢查調用是否正確)。暫時域名解析春季

說出呼叫到api.example.com製造。我可以,使用Java /春/ JBehave程序和臨時添加一行hosts文件或等效的行爲在JVM使api.example.com解析爲localhost

回答

1

解決方案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 HttpComponentsClientHttpRequestFactorysee this answer瞭解更多詳情。

解決方案3:模擬休息模板

您可以使用使用MockRestServiceServer一個RestTemplate模擬。該解決方案不涉及真正的http服務器。

+0

謝謝。是的,如果我找不到直接的方式將呼叫重定向到真實網址,我的計劃就是這樣。如果可能,我寧願使用正確的URL完成調用。 – Philipp

+0

您正在使用哪個http客戶端?它可能允許定義一個自定義的DNS解析器。 –

+0

我使用RestTemplate – Philipp

-1

我會說,你可以使用MockServer,並使用RestAssured框架,通過它可以跟蹤呼叫,並重定向到模擬服務器。