2015-08-24 58 views
2

在項目中,我建我的一些HTTP請求,就像這樣:當我使用配置構建URL時,如何測試我的HTTP調用?

var options = { 
    params:{ 
     foo: 'bar' 
     hello: world 
    } 
}; 
$http.get("my/service", options) 

這意味着最終的HTTP調用看起來像my/service?foo=bar&hello=worldVar

如何設置我的$httpBackend考慮到這一點?

我看到的問題是:

  1. 我不會在我的這種風格,這意味着建立的第一個參數在expectGet將很難保證參數順序。
  2. 它很難測試通話時,我真的不關心參數

回答

0

我發現這個最好的解決辦法是使用的expect/when接受功能的覆蓋,並混合它與this答案。這讓我喜歡的東西

$httpBackend.expectGET(function(url){ 
    var parser = document.createElement('a'); 
    parser.href=url; 
    return parser.search.indexOf('foo=bar') > -1 && 
      parser.search.indexOf('hello=world') > -1; 
}) 

,或者如果我不關心的參數我可以測試parser.pathname

但是,這仍然不是完美的,因爲它測試我沒有額外的參數,所以我仍然積極尋找替代解決方案的痛苦。

0

,如果你不關心的參數,你可以使用正則表達式匹配的URL的靜態部分:

$httpBackend.whenGET(/my\/service/) 
相關問題