相关疑难解决方法(0)

使用AngularJS在app运行时加载内容时的单元测试

我需要我的应用程序在运行时通过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)

javascript angularjs

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

angularjs ×1

javascript ×1