我需要我的应用在运行时通过 HTTP 端点运行一些配置。
我写了一个简单的服务来做到这一点:
module.factory('config', function ($http, analytics) {
return {
load: function () {
$http.get('/config').then(function (response) {
analytics.setAccount(response.googleAnalyticsAccount);
});
}
}
});
接下来,我在我的应用程序模块的运行块中调用此模块:
angular.module('app').***.run(function(config) {
config.load();
});
应用程序运行时一切正常,但在我的单元测试中,我收到此错误:“错误:意外请求:GET /config”
我知道这意味着什么,但我不知道当它从运行块发生时如何模拟它。
谢谢你的帮助
编辑以添加规格
在每个之前调用它
beforeEach(angular.mock.module('app'));
试过这个来模拟 $httpBackend:
beforeEach(inject(function($httpBackend) {
$httpBackend.expectGET('/config').respond(200, {'googleAnalyticsAccount':});
angular.mock.module('app')
$httpBackend.flush();
}));
但得到:
TypeError: Cannot read property 'stack' of null
at workFn (/Users/arnaud/workspace/unishared-dredit/test/lib/angular/angular-mocks.js:1756:55)
TypeError: Cannot read property 'stack' of null
at workFn (/Users/arnaud/workspace/unishared-dredit/test/lib/angular/angular-mocks.js:1756:55)
TypeError: Cannot read property 'stack' of null
at workFn (/Users/arnaud/workspace/unishared-dredit/test/lib/angular/angular-mocks.js:1756:55)
编辑自更新到 AngularJS 1.0.6
由于我已经更新到 AngularJS 1.0.6,由 Angular 团队的 Igor 建议,问题已经消失,但现在我有了这个,这听起来更“正常”,但我仍然不知道如何制作有用。
Error: Injector already created, can not register a module!