如何在AngularJS $httpBackend ExpectGET中使用正则表达式

前端之家收集整理的这篇文章主要介绍了如何在AngularJS $httpBackend ExpectGET中使用正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个$资源GET请求中传递一个url作为参数. Angular是url编码此参数,并且匹配$httpBackend.expectGET方法中的请求是finicky.

我看到您可以使用正则表达式来匹配预期的请求,但无法使其正常工作.我想匹配资源位置,但与任何“uri”查询字符串参数值匹配.

按Ctrl

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’注入语法来获取这个工作.我重写了测试,注入注入功能的依赖关系,并确保我的测试安排的顺序是正确的.现在它的工作就像一个魅力!

你需要摆脱正则表达式中的问号.

不用转义它,你只是将标记标记为可选项.

> test = "../api/lookup?uri=http%3A%2F%2Fwww.something.com";

> test.match(/\.\.\/api\/lookup?uri=.*/);
null

> test.match(/\.\.\/api\/lookup\?uri=.*/);
["../api/lookup?uri=http%3A%2F%2Fwww.something.com"]
原文链接:https://www.f2er.com/angularjs/142564.html

猜你在找的Angularjs相关文章