AngularJS更好的方法来读取配置文件



我构建了一个想要动态配置的angularJS应用程序,所以我创建了一个具有所需配置的config.json文件,并决定在app.config中加载配置文件,如下所示:

angular.module("myapp",[]).config([ my injections] , function(my providers){
if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open("GET","config.json"); //my config file
    xhr.send();
    xhr.onreadystatechange=function()
    {
        if (xhr.readyState==4 && xhr.status==200)
        {
            //config file parsed, set up params
        }
    }
})

我这样做的原因是$http不是在配置状态下注入的,而且我不想在控制器级别"配置"应用程序。

该应用程序工作正常。 它做了我想做的事情,一切都很好......除了在单元测试方面(业力+茉莉花)。

即使在 karma.conf 中我有:

{pattern: 'config.json',served:true,watched:false,included:false}

定义,当我启动业力时,我得到一个关于 config.json 404 的 CLI [WARN]。 我的单元测试以查看是否配置了所有内容,失败(即它没有读取 config.json)

有没有更好的方法来编写用于单元测试的配置文件?

在我们的应用程序中,我们有外部文件config.js,它只包含提供配置常量的普通模块。

angular.module('myAppPrefixconfig')
   .constant('PLAIN_CONSTANT', 'value'),
   .constant('APP_CONFIG', {...});

在您的应用程序中,您依赖于它,并且有普通的http请求 - 可以通过适当的配置由后端解决。

在 Karma 测试中,您可以直接在 karma.conf 中提供"测试配置"。

最新更新