実行時に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)
AngularJS1.0.6へのアップデート以降の編集
AngularチームのIgorのアドバイスを受けてAngularJS1.0.6にアップデートしたので、問題はなくなりましたが、今ではこれがあります。これはより「正常」に聞こえますが、作成方法がわかりません。できます。
Error: Injector already created, can not register a module!