角度模拟忽略请求

时间:2014-07-05 11:50:05

标签: javascript angularjs http angular-mock

我正在尝试使用Angular的$httpBackend服务(v1.2.15),但它只是忽略了我的请求。如您所见,我计划了两种请求,一种用于 html文档,另一种用于 REST请求。但是,当我提出请求时没有任何反应。我仍然接受了承诺,但永远不会得到解决。如果我改变了请求并写了一些意想不到的东西,我就会失败。

(function (angular) {
    'use strict';

    angular
        .module('testApp', ['ngMockE2E'])
        .run(function ($httpBackend, $http) {

            $httpBackend.whenGET(new RegExp(".*\/rest\/data$")).respond(function() {
                return [200, {title: 1}, {}]
            });

            $httpBackend.whenGET(new RegExp(".*\\.html$")).passThrough();

            $http.get("/rest/data").finally(function() {
                console.log("Request mocked");
            });

        });

}(angular));

修改

好的,我将向您展示调试错误所遵循的步骤:

  • 我使用passThrough函数代替respond来检查正则表达式是否已正确评估。是的,它提出了真正的要求,显然答案是未找到的。
  • 之后,我已按照评论中已解释的那样检查了刷新请求,但也收到了一条消息,表示没有请求。
  • console.log()也没有输出任何内容。警报,断点等都没有。

还有其他想法吗?

编辑2:

问题解决了。猜猜怎么样。我重新启动了grunt服务器并直接工作。

稍后我会尝试重现该bug,看看是否必须报告

2 个答案:

答案 0 :(得分:2)

尝试刷新待处理的请求。

$httpBackend.flush();

答案 1 :(得分:0)

标题变量的值是什么,或者不应该引用?我讨厌默默地失败的语言。您在return语句的末尾也缺少分号。可能还有其他javascript伏都教正在发生。建议在像Chrome这样的调试器中运行它,看看实际发生了什么。

您的回复中也缺少mime-type标头。