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后端没有。这就是它们不匹配的原因。
我尝试过但无效的方法:
- 正在从 Restangular 调用 /something。 表示意外 GET //某事
(两个斜杠)
- 使用 /something/another 而不是单个根级别
目录。 没有区别。
- 使用 $http 而不是 Restangular。 没有区别。
不久前解决了这个问题。发生的事情是 $httpBackend 测试导致路由更改。路由更改导致事件触发并让我们陷入循环。
但是,这仅在使用 $httpBackend 进行测试时发生。在现实世界中,这种无限循环并没有发生。
有两种解决方案:
- 在你的 beforeEach() 中重新定义 $location.go 这样你的测试就不会
实际上导致重定向 -or -
- 以某种方式捕获事件并压缩它,或者只是将代码更改为
不触发它
将 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后端没有。这就是它们不匹配的原因。
我尝试过但无效的方法:
- 正在从 Restangular 调用 /something。 表示意外 GET //某事 (两个斜杠)
- 使用 /something/another 而不是单个根级别 目录。 没有区别。
- 使用 $http 而不是 Restangular。 没有区别。
不久前解决了这个问题。发生的事情是 $httpBackend 测试导致路由更改。路由更改导致事件触发并让我们陷入循环。
但是,这仅在使用 $httpBackend 进行测试时发生。在现实世界中,这种无限循环并没有发生。
有两种解决方案:
- 在你的 beforeEach() 中重新定义 $location.go 这样你的测试就不会 实际上导致重定向 -or -
- 以某种方式捕获事件并压缩它,或者只是将代码更改为 不触发它