2012-11-05 231 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