当使用带有Restangular(1.4.0),httpBackend和angular-mocks(1.4.7)的Jasmine和Angular(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 /某事 不再需要预期
它正在测试的代码是:
$scope.doSomething = function () {
Restangular.one('something').get();
};
我已经尝试了我能想到的一切。我认为这只是Karma / Jasmine / Restangular中的一个错误,但我不知道如何解决它。
值得注意的一点是,httpBackend和Restangular对URL不一致。 Restangular将/
添加到/something
。 httpBackend没有。这就是他们不匹配的原因。
我尝试过但没有成功的事情:
答案 0 :(得分:0)
前一段时间解决了这个问题。发生的事情是$ httpBackend测试导致路由更改。那次路线变化导致事件发生,导致我们陷入困境。
但是,这只发生在使用$ httpBackend进行测试时。在现实世界中,这种无限循环没有发生。
有两种解决方案: