2017-04-11 45 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框架,通过它可以跟踪呼叫,并重定向到模拟服务器。