如何测试控制器具有解决属性?
它抛出一个错误:未知的提供者:InitProvider,在测试期间,可以理解。
如何测试?
它抛出一个错误:未知的提供者:InitProvider,在测试期间,可以理解。
如何测试?
我使用route config中的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在路由配置中可用。
在这里同样的事情。我用这个方法解决了它:
https://groups.google.com/forum/?fromgroups=#!topic/angular/LzXm-9nwkjY。
基本上,我嘲笑通常使用简单变量发送的数据,并将其添加到测试中的控制器。在你的情况下,我认为它会像:
var initData = { contents: [{message: 'Hello!'}] }; $controller("ContentCtrl",{ $scope: ...,init: initData });