我需要我的应用程序在运行时通过HTTP端点运行一些配置.
我写了一个简单的服务来做到这一点:
module.factory('config', function ($http, analytics) {
return {
load: function () {
$http.get('/config').then(function (response) {
analytics.setAccount(response.googleAnalyticsAccount);
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
接下来,我在我的app模块的运行块中调用此模块:
angular.module('app').***.run(function(config) {
config.load();
});
Run Code Online (Sandbox Code Playgroud)
应用程序运行时一切正常,但在我的单元测试中,我收到此错误:"错误:意外请求:GET/config"
我知道它意味着什么,但我不知道如何从运行块发生它时嘲笑它.
谢谢你的帮助
编辑添加规格
在每个之前调用它
beforeEach(angular.mock.module('app'));
Run Code Online (Sandbox Code Playgroud)
试过这个来模拟$ httpBackend:
beforeEach(inject(function($httpBackend) {
$httpBackend.expectGET('/config').respond(200, {'googleAnalyticsAccount':});
angular.mock.module('app')
$httpBackend.flush();
}));
Run Code Online (Sandbox Code Playgroud)
但得到了:
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)
Run Code Online (Sandbox Code Playgroud)
自更新到AngularJS 1.0.6后编辑
由于我已经更新到AngularJS 1.0.6,由Angular团队的Igor建议,问题已经消失,但现在我已经有了这个,听起来更"正常",但我仍然无法弄清楚如何制作有用.
Error: Injector already created, …Run Code Online (Sandbox Code Playgroud)