gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:44:04 25 4
gpt4 key购买 nike

我在 $resource GET 请求中将 url 作为参数传递。 Angular 是对这个参数进行 url 编码,并且在 $httpBackend.expectGET 方法中匹配请求是很挑剔的。

我看到您可以使用正则表达式来匹配预期的请求,但无法使其正常工作。我想匹配资源位置,但使用任何“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”注入(inject)语法来实现这一点。我重写了测试,使用注入(inject)函数注入(inject)依赖项,并确保我的测试安排的顺序是正确的。现在它就像一个魅力!

最佳答案

您需要在正则表达式中转义问号。

如果不转义它,您只是将其前面的 token 标记为可选。

> 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"]

关于regex - 如何在 AngularJS $httpBackend ExpectGET 中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19497263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com