2

在我的项目中,我构建了一些 HTTP 请求,如下所示:

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

这意味着最终的 HTTP 调用看起来像my/service?foo=bar&hello=worldVar

我该如何设置我$httpBackend的帐户?

我看到的问题是:

  1. 我不能保证这种风格的参数顺序,这意味着设置第一个参数expectGet会很困难。
  2. 当我真的不关心参数时,很难测试调用
4

2 回答 2

0

我发现的最佳解决方案是使用接受函数的expect/的覆盖when,并将其与答案混合。这让我想到了类似的东西

$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

但是,这仍然不是完美的,因为测试我没有额外的参数很痛苦,所以我仍在积极寻找替代解决方案。

于 2015-08-25T17:09:48.817 回答
0

如果您不关心参数,您可以使用正则表达式匹配 URL 的静态部分:

$httpBackend.whenGET(/my\/service/)
于 2015-10-13T19:41:13.493 回答