Javascript AngularJS:$httpBackend.when()使用url的方法

Javascript AngularJS:$httpBackend.when()使用url的方法,javascript,regex,angularjs,angularjs-e2e,angular-mock,Javascript,Regex,Angularjs,Angularjs E2e,Angular Mock,我正在尝试按照设置和模拟$httpBackEnd进行e2e测试。我希望在请求模板时传递所有请求。从文档中可以看出,url参数可以是三种类型string functionstring或RegExp及其说明: HTTP url或接收url并在url与当前定义匹配时返回true的函数 我想做什么 我希望所有请求都能直接/查看/。。。。和pub/views/。。。。穿过 我试过的 放一个字符串有效,放一个尝试使用函数无效 RegExp可能是最快的方法,但我对此一无所知。如果你想给我一个有效的RegExp

我正在尝试按照设置和模拟$httpBackEnd进行e2e测试。我希望在请求模板时传递所有请求。从文档中可以看出,url参数可以是三种类型string functionstring或RegExp及其说明:

HTTP url或接收url并在url与当前定义匹配时返回true的函数

我想做什么

我希望所有请求都能直接/查看/。。。。和pub/views/。。。。穿过

我试过的

放一个字符串有效,放一个尝试使用函数无效

RegExp可能是最快的方法,但我对此一无所知。如果你想给我一个有效的RegExp,我将永远感激你


我知道我的isTemplateUrl函数并不能完全实现我想要的功能,但除此之外,它还应该适用于这两个URL。

要实现您想要实现的功能,正则表达式应该是:

/(direct|pub)\/views\/.*$/

要实现您的目标,正则表达式应该是:

/(direct|pub)\/views\/.*$/

如果你没有太多的Url,我建议手动设置Url 因为有了正则表达式,你就可以

direct/views/*
pub/views/*
试试这个,看看它是否能解决你的问题

var devApp = angular.module('app-dev', ['app', 'ngMockE2E']);

devApp.run(function($httpBackend){

    $httpBackend.whenGET(/^(direct|pub)\/views\/.*$/).passThrough();
});

如果你没有太多的Url,我建议手动设置Url 因为有了正则表达式,你就可以

direct/views/*
pub/views/*
试试这个,看看它是否能解决你的问题

var devApp = angular.module('app-dev', ['app', 'ngMockE2E']);

devApp.run(function($httpBackend){

    $httpBackend.whenGET(/^(direct|pub)\/views\/.*$/).passThrough();
});
我在回答中看到,当httpbackend的**在1.3.0版中有效时,使用函数作为方法*的url匹配。如果你看到其他版本的文档,你会发现你不能使用这个函数

相反,您可以使用此函数将对象作为参数传递给方法test。在您的情况下,这将是:

$httpBackend.whenGET({ test: isTemplateUrl}).passThrough();
我在回答中看到,当httpbackend的**在1.3.0版中有效时,使用函数作为方法*的url匹配。如果你看到其他版本的文档,你会发现你不能使用这个函数

相反,您可以使用此函数将对象作为参数传递给方法test。在您的情况下,这将是:

$httpBackend.whenGET({ test: isTemplateUrl}).passThrough();

谢谢你的帖子。这真的很有帮助!在我的例子中,我希望根据登录的用户和他们拥有的组角色传回一个特定的json文件。我们将用户角色存储在$window.USER.groups中。我使用您的{test:function{}}思想作为参数完成了这项工作。我的解决方案有一个要点:谢谢你的帖子。这真的很有帮助!在我的例子中,我希望根据登录的用户和他们拥有的组角色传回一个特定的json文件。我们将用户角色存储在$window.USER.groups中。我使用您的{test:function{}}思想作为参数完成了这项工作。我的解决方案的要点如下: