如何在angularjs中为app.run编写单元测试?

时间:2015-02-17 09:02:38

标签: angularjs

我的app.run方法如下所示。

 app.run(['urlconfigservice',
        function (urlconfigservice) {            
            urlconfigservice.loadurlconfiguration();
        }
      ]);

我的urlconfigservice如下所示:哪个读取urlconfig.json文件并将结果存储在urlconfiguration中。

define([
    'angular'
], function (angular) {
    'use strict';
    return angular.module('urlconfigservice', [])
      .factory('urlconfigservice', [ //
            '$rootScope', '$http',
    function ($rootScope, $http) {        
        return {            
            loadurlconfiguration: function () {                
                    $http.get('urlconfig.json').success(function (data) {                        
                        $rootScope.urlconfiguration = data;
                    });                
            }
        };
    }
      ])

    ;
});

1 个答案:

答案 0 :(得分:0)

如角度文档所述,模块的运行块很难测试,最好不要做。和你一样,它应该只使用逻辑所在的其他服务。

AngularJS文档:

  

运行块是Angular中与main方法最接近的东西。运行块是需要运行以启动应用程序的代码。在配置完所有服务并创建注入器后执行。运行块通常包含难以进行单元测试的代码,因此应在隔离模块中声明,以便在单元测试中忽略它们。

然而,您可以测试工厂是否像在other post中描述的那样在测试运行块时进行了调用