Я передаю URL-адрес в качестве параметра в запросе GET $resource. Angular - это URL-код, кодирующий этот параметр, и сопоставление запроса в методе $httpBackend.expectGET является исчерпывающим.
Я вижу, что вы можете использовать регулярные выражения для соответствия ожидаемому запросу, но не можете заставить его работать. Я хотел бы сопоставить местоположение ресурса, но с любым значением параметра строки запроса uri.
Ctrl
var resource = $resource('../api/lookup');
resource.get({ uri: "http://www.something.com" }, function (data) {
// do something
});
Test
// 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=.*/
Может ли кто-нибудь понять, почему мое регулярное выражение не сопоставляется?
Edit
Даже после улучшения регулярного выражения, как было предложено, я не мог получить эту работу, используя синтаксис "$ var". Я переписал тесты, введя зависимости с помощью функции инъекции и убедившись, что порядок моей тестовой компоновки верен. Теперь он работает как шарм!