整个故事发表在Angular 1.5.5上。
所以我在$ onInit函数上创建了一个组件及其控制器,它基本上包含了这个请求
apphelper.readFromConfig($http).then(function (config) {...});
我得到 [$ http:badreq] Http请求配置网址必须是字符串错误
apphelper是一个典型的javascript闭包函数,几个不同的应用程序使用它来获取预定义的ajax调用,它看起来像这样
var apphelper = function () {
var config;
return {
readFromConfig: function ($http) {
return $http.get(this.getConfig()).
then(function (response) {
return response.data;
});
},
setConfig: function (_config) {
config = _config;
},
getConfig: function () {
return config;
}
}
} ();
现在这里是非常奇怪的部分 setConfig()在工厂内部触发
app.factory('session', function GetSession($http, $q) {
return {
getConfig: function (configuration) {
var defer = $q.defer();
if (!configuration) {
configuration = "default";
}
$http({
url: "/config/" + configuration,
method: "GET",
data: "{}",
headers: { 'Content-Type': 'application/json' }
}).success(function (data, status, headers, config) {
//staff
apphelper.setConfig("/config/" + configuration);
defer.resolve('done');
}).error(function (data, status, headers, config) {
console.log(data);
defer.reject();
});
return defer.promise;
}
}
});
并且此工厂从routeprovider
触发app.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.
when('/:config', {
templateUrl: 'partials/components/my-map.html',
controller: 'MapController',
resolve: {
configData: function (session, $route) {
return session.getConfig($route.current.params.config);
}
}
});
}]);
所有这个故事都有两个原因
虽然看似有效但很奇怪。现在我无法弄清楚如何对这个东西进行单元测试。任何帮助将不胜感激