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

パラメータを気にしない場合は、正規表現を使用して URL の静的部分に一致させることができます。

$httpBackend.whenGET(/my\/service/)
于 2015-10-13T19:41:13.493 に答える
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 に答える