我构建了一个我想要动态配置的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)
有没有更好的方法来编写配置文件进行单元测试?
答案 0 :(得分:1)
在我们的应用程序中,我们有外部文件config.js,它只包含为常量提供配置的普通模块。
angular.module('myAppPrefixconfig')
.constant('PLAIN_CONSTANT', 'value'),
.constant('APP_CONFIG', {...});
在你的应用程序中你依赖它,并且有普通的http请求 - 你的后端可以通过适当的配置来解决。
在Karma测试中,您可以直接在karma.conf中提供“测试配置”。