2012-11-05 190 views
2

我有一个基于spark-framework的REST服务。看起来是这样的(simplyfied):单元测试REST服务

public void init() { 

    get(new Route("spark/favorites") { 
     @Override 
     public Object handle(Request request, Response response) { 
      ExternalService exS= new ExternalService();    

      ArrayList<String> favs= exS.getFavorites(); 

      Gson gson = getGson(); 
      return gson.toJson(favs); 
     } 
    }); 
} 

现在我想要写我的服务的一些测试,看看我的GET/POST/PUT /删除我想要做什么。为此,我在测试期间将它部署在嵌入式Jetty上。

我现在面临的问题是我的服务依赖于外部REST服务。我想嘲笑那些(要进行快速单元测试)的所有电话。但我不知道如何模拟正在运行的服务。

这可能吗?我应该切换到另一个REST框架吗? 建议?

+0

请添加您用于访问第三方REST服务的生产代码。只有这样我们才能够建议如何嘲笑这些。 – 2012-11-05 13:35:12

+0

我想模拟像ExternalService类的类。 – Tarken

+2

如果你依赖Jetty,它不是一个单元测试。这是一个综合测试。 – artbristol

回答

0

这是一个集成测试,无论您的应用程序是否与webservice mock或真正的第三方web服务进行通信。单元测试是当你单独测试你的类时。

如果您想要模拟外部Web服务,您需要建立可配置第三方应用程序的链接,并为集成测试提供单独的配置。 对于web服务模拟,您可以使用以下几种可用模拟框架之一: https://sourceforge.net/projects/soaprest-mocker