Angular httpBackend 导致浏览器崩溃

Angular httpBackend crashing browser

将 Jasmine 和 Angular (1.4.7) 与 Restangular (1.4.0)、httpBackend 和 angular-mocks (1.4.7) 一起使用时,Chrome 和 PhantomJS 在遇到以下行时都会崩溃:

httpBackend.whenGET('/something').respond(200);

如果我完全摆脱它,如下所示,我会收到以下错误:

//httpBackend.whenGET('/something').respond(200);
scope.doSomething();  // will invoke a GET to /keepAlive
httpBackend.expectGET("/something").respond(200);
httpBackend.flush();

错误:意外请求:GET /something 预计没有更多请求

它正在测试的代码是:

$scope.doSomething = function () {
    Restangular.one('something').get();
};

我已经尝试了所有我能想到的。我认为这只是 Karma/Jasmine/Restangular 中的一个错误,但我不知道如何解决它。

值得注意的一件事是 httpBackend 和 Restangular 不同意 URL。 Restangular 将 / 添加到 /something。 http后端没有。这就是它们不匹配的原因。

我尝试过但无效的方法:

不久前解决了这个问题。发生的事情是 $httpBackend 测试导致路由更改。路由更改导致事件触发并让我们陷入循环。

但是,这仅在使用 $httpBackend 进行测试时发生。在现实世界中,这种无限循环并没有发生。

有两种解决方案:

  1. 在你的 beforeEach() 中重新定义 $location.go 这样你的测试就不会 实际上导致重定向 -or -
  2. 以某种方式捕获事件并压缩它,或者只是将代码更改为 不触发它