2014-10-31 35 views
1

對Restangular responseInterceptor執行單元測試的最佳方法是什麼?測試Restangular responseInterceptor

例如:

.config(['RestangularProvider', function(RestangularProvider){ 
    RestangularProvider.setDefaultHttpFields({cache: true, withCredentials: true}); 
    RestangularProvider.addResponseInterceptor(function (data, operation, what, url, response, deferred) { 
     console.log('response from '+ url); 
     console.log(data); 
     var extractedData; 
     // .. to look for getList operations 
     if (operation === "getList") { 
      // .. and handle the data and meta data 
      extractedData = data.data; 
      //extractedData.meta = data; 
     } else { 
      extractedData = data; 
     } 
     return extractedData; 
    }); 
}]) 

回答

0

我終於解決了有代碼未經測試該位。它本質上是來自Restangular的文檔的剪切和粘貼,而其他代碼會被破壞,因爲它會影響Restangular在其餘代碼中提供的格式。

0

我往往是「老派」,所以我想使它成爲一個命名的功能,所以我可以自行測試;而無需通過Restangular放置數據進行測試。

下面是採用了棱角分明的$httpBackend一個例子: http://jbavari.github.io/blog/2014/06/20/testing-interceptor-headers-in-angularjs/

+0

我意識到我的問題是關於如何模擬RestangularProvider,它提供給匿名函數。我還有另一個這種模式的實例,我需要添加一個測試,所以我仍然在研究這個。 – 2014-11-06 21:24:50

+0

由於提供者用於配置服務,我不認爲需要模擬提供者本身;我相信服務的創建者可以通過測試來確認提供者是否正確地啓用/修改服務的行爲。至多我想確認我通過服務的提供者API啓用/修改的功能實際上是由服務使用的。在這種情況下,使用$ httpBackend的博客文章中使用的方法似乎是合適的(對於基於http的服務)。所以我會通過運用Restangular API來執行測試,並確認有效負載已按照您的預期進行了修改。 – saschwarz 2014-11-06 22:01:10