【问题标题】:AngularJS : $httpBackend.when() using a method for the urlAngularJS:$httpBackend.when() 使用 url 的方法
【发布时间】:2015-09-29 21:06:46
【问题描述】:

我正在尝试根据angular docs 设置和模拟 $httpBackEnd 以进行 e2e 测试。当我请求模板时,我想通过所有请求。从文档中,它说url参数可以是三种类型stringfunction(string)RegExp及其描述:

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

我要做什么

我希望所有 GET 请求都发送到 direct/views/....pub/views/....PassThrough()

我尝试了什么

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

devApp.run(function($httpBackend){

    var isTemplateUrl = function(url){
        if(url === '/direct/views/_shell/shell' || url === '/direct/views/_shell/shell') {
            return true;
        }
        return false;
    };
//    Manually setting the url works
//    $httpBackend.whenGET('/direct/views/_shell/shell').passThrough();
//    $httpBackend.whenGET('/direct/views/home/home').passThrough();

//    Does not work
    $httpBackend.whenGET(isTemplateUrl).passThrough();
});

放置字符串有效,尝试使用函数无效。

RegExp 可能是最快的方法,但我对此一无所知。如果您想给我一个有效的正则表达式,我将永远感激不尽。

我知道我的 isTemplateUrl 函数并不能完全满足我的要求,但除此之外,它应该仍然适用于这两个网址。

【问题讨论】:

    标签: javascript regex angularjs angularjs-e2e angular-mock


    【解决方案1】:

    实现您想要做的事情的正则表达式是:

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

    【讨论】:

      【解决方案2】:

      如果你没有太多的 url 槽,我建议手动设置 Url 因为使用正则表达式,您允许任何类似

      direct/views/*
      pub/views/*
      

      试试这个,看看它是否能解决您的问题。

      var devApp = angular.module('app-dev', ['app', 'ngMockE2E']);
      
      devApp.run(function($httpBackend){
      
          $httpBackend.whenGET(/^(direct|pub)\/views\/.*$/).passThrough();
      });
      

      【讨论】:

        【解决方案3】:

        我在回答 How to mock get(id) requests 中看到,使用函数作为方法的 url 匹配 *when**of httpbackend 从版本 1.3.0 开始有效。如果你看到其他版本的文档你会发现你不能使用这个功能。

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

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

        【讨论】:

        • 感谢这篇文章。这真的很有帮助!就我而言,我想根据登录的用户和他们拥有的组角色传回一个特定的 json 文件。我们将用户角色存储在 $window.USER.groups 中。我使用您的 {test: function(){}} 想法作为参数来完成此操作。我的解决方案在 GIST 上:gist.github.com/anonymous/7a5889437ff131940f451a5a77b3c7a3
        猜你喜欢
        • 1970-01-01
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-24
        • 1970-01-01
        • 2015-01-15
        • 1970-01-01
        相关资源
        最近更新 更多