如何测试具有解析属性的控制器?它抛出一个错误:未知提供者:InitProvider,在测试期间,可以理解。我该如何测试它?
我使用路由配置中的 init 属性来加载数据并在控制器实例化时将其传递给控制器,因此在加载数据之前路由不会改变。
$routeProvider
.when('/topic/:topic_id/content/:content_id', {
templateUrl: 'views/content.html',
controller: 'ContentCtrl',
resolve: {
init: ContentCtrl.init
}
});
模式一开始就完全错误吗?
'use strict';
var ContentCtrl = ['$scope', '$location', '$routeParams', 'init', function ($scope, $location, $routeParams, init) {
$scope.contents = init.contents;
}];
ContentCtrl.init = ['$q', 'app_config', '$log', '$timeout', function ($q, app_config, $log, $timeout) {
var defer = $q.defer();
$log.log("ContentCtrl loading..");
$timeout(function() {
defer.resolve({contents: [
{message: 'Hello!'}
]});
$log.log("ContentCtrl loaded.");
}, 2000);
return defer.promise;
}];
angular.module('studentportalenApp').controller('ContentCtrl', ContentCtrl);
我想将整个控制器封装在里面.controler('ContentCtrl', function() { ... })
,但还没有弄清楚如何正确完成以使 init 在路由配置中可用。