【问题标题】:Mocking REST call to another rest-service模拟对另一个休息服务的 REST 调用
【发布时间】:2017-03-01 12:25:17
【问题描述】:

我写了一个调用 REST 服务的 REST 代理

@RequestMapping(value = { "session" }, method = {RequestMethod.GET)
    @ResponseBody
    public String sesionGet(HttpServletRequest request, HttpServletResponse httpServletResponse) {

            //call rest webservice    
            PostResponse postRequest = IncomeAccessUtils.postRequest(/*call web esrvice*/);

我需要对该代理进行集成测试,但有时部署外部 Web 服务的服务器已关闭。我可以模拟来自 web 服务调用的响应吗?我正在使用 spring-test-mvc 和/或 rest-assure 框架进行测试。

【问题讨论】:

标签: java spring web-services rest integration-testing


【解决方案1】:

是的,在 Java 中有几种方法可以做到这一点。

如果没有太多细节,我建议您查看betamax - 它会记录任何网络集成并保存以供以后重播。您可以传入是否要实时运行或使用录制。 (在一个项目中,我们在 CI 环境中针对真实服务器运行,但在本地运行测试时使用版本控制记录。)

SoapUI 是另一个能够模拟 Web 服务器的工具。如果您使用 WSDL 和/或 SOAP,这可能是一个不错的选择。 (可怜的你!:-))有很多这样的替代品可供休息,但我的脑海中没有新鲜感。

一个简单的替代方案是运行 python 的简单 HTTP 服务器:python -m SimpleHTTPServer 8888。它只提供启动目录中的任何内容。将您的响应作为文件放在那里,您就可以开始了。 (使用简单的东西,但如果标头等很重要,则不太好。也不擅长模拟失败的调用。)

最后,如果您完全可以不拨打网络电话,那么您可以在内部进行模拟。如果您使用像 Spring 这样的依赖注入框架,则很容易运行带有后端调用的模拟实现的版本,而不是真实的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-02
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2016-12-24
    • 2011-08-10
    相关资源
    最近更新 更多