如何测试具有解析属性的控制器?
它会抛出一个错误:未知提供者: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 在路由配置中可用。