$resource GET リクエストでパラメーターとして URL を渡しています。Angular はこのパラメータを URL エンコードしており、$httpBackend.expectGET メソッドでリクエストを照合するのは面倒です。
正規表現を使用して予想される要求に一致させることはできますが、機能させることはできません。リソースの場所を一致させたいのですが、「uri」クエリ文字列パラメーター値と一致させたいです。
コントロール
var resource = $resource('../api/lookup');
resource.get({ uri: "http://www.something.com" }, function (data) {
// do something
});
テスト
// mock out the $httpBackend response
$httpBackend.expectGET(/\.\.\/api\/lookup\?uri=.*/)).respond(200, { Response: "a response" });
// call my test method here
// ensure the $httpBackend work is done
$rootScope.$apply();
$httpBackend.flush();
// do assertions
カルマ出力
Error: Unexpected request: GET ../api/lookup?uri=http%3A%2F%2Fwww.something.com
Expected GET /../api/lookup?uri=.*/
私の正規表現が一致しない理由を誰かが見ることができますか?
編集
提案されたように正規表現を改善した後でも、「 $var」注入構文を使用してこれを機能させることができませんでした。テストを書き直し、関数 inject を使用して依存関係を注入し、テスト配置の順序が正しいことを確認しました。今では魔法のように機能しています!