模拟REST调用另一个休息服务

时间:2017-03-01 12:25:18

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

我编写了一个调用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服务的服务器已关闭。我可以通过webservice调用来模拟响应吗?我正在使用spring-test-mvc和/或rest-assure框架进行测试。

1 个答案:

答案 0 :(得分:1)

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

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

SoapUI是另一种能够模拟Web服务器的工具。如果您使用WSDL和/或SOAP,这可能是一个不错的选择。 (可怜的你!:-))有很多这样的休息选择,但我不知道它在我的头脑中。

一个简单的替代方法是运行pythons简单的HTTP服务器:python -m SimpleHTTPServer 8888。它只是服务于它启动的目录中的任何内容。把你的反应放在那里作为文件,你很高兴。 (使用简单的东西,但如果标题等重要不太好。也不擅长模拟失败的调用。)

最后,如果你完全不打网络,你可以在内部进行嘲笑。如果你使用像Spring这样的依赖注入框架,很容易运行一个带有后端调用的模拟实现的版本,而不是真正的版本。